{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "85555228-c2db-422a-a18e-07fe2db3c1ee",
   "metadata": {},
   "source": [
    "# PCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7301c084-512e-4179-9be5-3d1eeed465ec",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd \n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "add7b648-e19a-42a4-81d3-dae959537f80",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.preprocessing import KBinsDiscretizer\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "43f9aa7f-2f55-4c7d-9227-cb8ce6c5ea7f",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "# 导入sklearn自带的iris数据集\n",
    "iris = datasets.load_iris()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "a6878db8-2513-4893-8c9f-8e26bf9dd8a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'data': array([[5.1, 3.5, 1.4, 0.2],\n",
       "        [4.9, 3. , 1.4, 0.2],\n",
       "        [4.7, 3.2, 1.3, 0.2],\n",
       "        [4.6, 3.1, 1.5, 0.2],\n",
       "        [5. , 3.6, 1.4, 0.2],\n",
       "        [5.4, 3.9, 1.7, 0.4],\n",
       "        [4.6, 3.4, 1.4, 0.3],\n",
       "        [5. , 3.4, 1.5, 0.2],\n",
       "        [4.4, 2.9, 1.4, 0.2],\n",
       "        [4.9, 3.1, 1.5, 0.1],\n",
       "        [5.4, 3.7, 1.5, 0.2],\n",
       "        [4.8, 3.4, 1.6, 0.2],\n",
       "        [4.8, 3. , 1.4, 0.1],\n",
       "        [4.3, 3. , 1.1, 0.1],\n",
       "        [5.8, 4. , 1.2, 0.2],\n",
       "        [5.7, 4.4, 1.5, 0.4],\n",
       "        [5.4, 3.9, 1.3, 0.4],\n",
       "        [5.1, 3.5, 1.4, 0.3],\n",
       "        [5.7, 3.8, 1.7, 0.3],\n",
       "        [5.1, 3.8, 1.5, 0.3],\n",
       "        [5.4, 3.4, 1.7, 0.2],\n",
       "        [5.1, 3.7, 1.5, 0.4],\n",
       "        [4.6, 3.6, 1. , 0.2],\n",
       "        [5.1, 3.3, 1.7, 0.5],\n",
       "        [4.8, 3.4, 1.9, 0.2],\n",
       "        [5. , 3. , 1.6, 0.2],\n",
       "        [5. , 3.4, 1.6, 0.4],\n",
       "        [5.2, 3.5, 1.5, 0.2],\n",
       "        [5.2, 3.4, 1.4, 0.2],\n",
       "        [4.7, 3.2, 1.6, 0.2],\n",
       "        [4.8, 3.1, 1.6, 0.2],\n",
       "        [5.4, 3.4, 1.5, 0.4],\n",
       "        [5.2, 4.1, 1.5, 0.1],\n",
       "        [5.5, 4.2, 1.4, 0.2],\n",
       "        [4.9, 3.1, 1.5, 0.2],\n",
       "        [5. , 3.2, 1.2, 0.2],\n",
       "        [5.5, 3.5, 1.3, 0.2],\n",
       "        [4.9, 3.6, 1.4, 0.1],\n",
       "        [4.4, 3. , 1.3, 0.2],\n",
       "        [5.1, 3.4, 1.5, 0.2],\n",
       "        [5. , 3.5, 1.3, 0.3],\n",
       "        [4.5, 2.3, 1.3, 0.3],\n",
       "        [4.4, 3.2, 1.3, 0.2],\n",
       "        [5. , 3.5, 1.6, 0.6],\n",
       "        [5.1, 3.8, 1.9, 0.4],\n",
       "        [4.8, 3. , 1.4, 0.3],\n",
       "        [5.1, 3.8, 1.6, 0.2],\n",
       "        [4.6, 3.2, 1.4, 0.2],\n",
       "        [5.3, 3.7, 1.5, 0.2],\n",
       "        [5. , 3.3, 1.4, 0.2],\n",
       "        [7. , 3.2, 4.7, 1.4],\n",
       "        [6.4, 3.2, 4.5, 1.5],\n",
       "        [6.9, 3.1, 4.9, 1.5],\n",
       "        [5.5, 2.3, 4. , 1.3],\n",
       "        [6.5, 2.8, 4.6, 1.5],\n",
       "        [5.7, 2.8, 4.5, 1.3],\n",
       "        [6.3, 3.3, 4.7, 1.6],\n",
       "        [4.9, 2.4, 3.3, 1. ],\n",
       "        [6.6, 2.9, 4.6, 1.3],\n",
       "        [5.2, 2.7, 3.9, 1.4],\n",
       "        [5. , 2. , 3.5, 1. ],\n",
       "        [5.9, 3. , 4.2, 1.5],\n",
       "        [6. , 2.2, 4. , 1. ],\n",
       "        [6.1, 2.9, 4.7, 1.4],\n",
       "        [5.6, 2.9, 3.6, 1.3],\n",
       "        [6.7, 3.1, 4.4, 1.4],\n",
       "        [5.6, 3. , 4.5, 1.5],\n",
       "        [5.8, 2.7, 4.1, 1. ],\n",
       "        [6.2, 2.2, 4.5, 1.5],\n",
       "        [5.6, 2.5, 3.9, 1.1],\n",
       "        [5.9, 3.2, 4.8, 1.8],\n",
       "        [6.1, 2.8, 4. , 1.3],\n",
       "        [6.3, 2.5, 4.9, 1.5],\n",
       "        [6.1, 2.8, 4.7, 1.2],\n",
       "        [6.4, 2.9, 4.3, 1.3],\n",
       "        [6.6, 3. , 4.4, 1.4],\n",
       "        [6.8, 2.8, 4.8, 1.4],\n",
       "        [6.7, 3. , 5. , 1.7],\n",
       "        [6. , 2.9, 4.5, 1.5],\n",
       "        [5.7, 2.6, 3.5, 1. ],\n",
       "        [5.5, 2.4, 3.8, 1.1],\n",
       "        [5.5, 2.4, 3.7, 1. ],\n",
       "        [5.8, 2.7, 3.9, 1.2],\n",
       "        [6. , 2.7, 5.1, 1.6],\n",
       "        [5.4, 3. , 4.5, 1.5],\n",
       "        [6. , 3.4, 4.5, 1.6],\n",
       "        [6.7, 3.1, 4.7, 1.5],\n",
       "        [6.3, 2.3, 4.4, 1.3],\n",
       "        [5.6, 3. , 4.1, 1.3],\n",
       "        [5.5, 2.5, 4. , 1.3],\n",
       "        [5.5, 2.6, 4.4, 1.2],\n",
       "        [6.1, 3. , 4.6, 1.4],\n",
       "        [5.8, 2.6, 4. , 1.2],\n",
       "        [5. , 2.3, 3.3, 1. ],\n",
       "        [5.6, 2.7, 4.2, 1.3],\n",
       "        [5.7, 3. , 4.2, 1.2],\n",
       "        [5.7, 2.9, 4.2, 1.3],\n",
       "        [6.2, 2.9, 4.3, 1.3],\n",
       "        [5.1, 2.5, 3. , 1.1],\n",
       "        [5.7, 2.8, 4.1, 1.3],\n",
       "        [6.3, 3.3, 6. , 2.5],\n",
       "        [5.8, 2.7, 5.1, 1.9],\n",
       "        [7.1, 3. , 5.9, 2.1],\n",
       "        [6.3, 2.9, 5.6, 1.8],\n",
       "        [6.5, 3. , 5.8, 2.2],\n",
       "        [7.6, 3. , 6.6, 2.1],\n",
       "        [4.9, 2.5, 4.5, 1.7],\n",
       "        [7.3, 2.9, 6.3, 1.8],\n",
       "        [6.7, 2.5, 5.8, 1.8],\n",
       "        [7.2, 3.6, 6.1, 2.5],\n",
       "        [6.5, 3.2, 5.1, 2. ],\n",
       "        [6.4, 2.7, 5.3, 1.9],\n",
       "        [6.8, 3. , 5.5, 2.1],\n",
       "        [5.7, 2.5, 5. , 2. ],\n",
       "        [5.8, 2.8, 5.1, 2.4],\n",
       "        [6.4, 3.2, 5.3, 2.3],\n",
       "        [6.5, 3. , 5.5, 1.8],\n",
       "        [7.7, 3.8, 6.7, 2.2],\n",
       "        [7.7, 2.6, 6.9, 2.3],\n",
       "        [6. , 2.2, 5. , 1.5],\n",
       "        [6.9, 3.2, 5.7, 2.3],\n",
       "        [5.6, 2.8, 4.9, 2. ],\n",
       "        [7.7, 2.8, 6.7, 2. ],\n",
       "        [6.3, 2.7, 4.9, 1.8],\n",
       "        [6.7, 3.3, 5.7, 2.1],\n",
       "        [7.2, 3.2, 6. , 1.8],\n",
       "        [6.2, 2.8, 4.8, 1.8],\n",
       "        [6.1, 3. , 4.9, 1.8],\n",
       "        [6.4, 2.8, 5.6, 2.1],\n",
       "        [7.2, 3. , 5.8, 1.6],\n",
       "        [7.4, 2.8, 6.1, 1.9],\n",
       "        [7.9, 3.8, 6.4, 2. ],\n",
       "        [6.4, 2.8, 5.6, 2.2],\n",
       "        [6.3, 2.8, 5.1, 1.5],\n",
       "        [6.1, 2.6, 5.6, 1.4],\n",
       "        [7.7, 3. , 6.1, 2.3],\n",
       "        [6.3, 3.4, 5.6, 2.4],\n",
       "        [6.4, 3.1, 5.5, 1.8],\n",
       "        [6. , 3. , 4.8, 1.8],\n",
       "        [6.9, 3.1, 5.4, 2.1],\n",
       "        [6.7, 3.1, 5.6, 2.4],\n",
       "        [6.9, 3.1, 5.1, 2.3],\n",
       "        [5.8, 2.7, 5.1, 1.9],\n",
       "        [6.8, 3.2, 5.9, 2.3],\n",
       "        [6.7, 3.3, 5.7, 2.5],\n",
       "        [6.7, 3. , 5.2, 2.3],\n",
       "        [6.3, 2.5, 5. , 1.9],\n",
       "        [6.5, 3. , 5.2, 2. ],\n",
       "        [6.2, 3.4, 5.4, 2.3],\n",
       "        [5.9, 3. , 5.1, 1.8]]),\n",
       " 'target': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "        0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]),\n",
       " 'frame': None,\n",
       " 'target_names': array(['setosa', 'versicolor', 'virginica'], dtype='<U10'),\n",
       " 'DESCR': '.. _iris_dataset:\\n\\nIris plants dataset\\n--------------------\\n\\n**Data Set Characteristics:**\\n\\n:Number of Instances: 150 (50 in each of three classes)\\n:Number of Attributes: 4 numeric, predictive attributes and the class\\n:Attribute Information:\\n    - sepal length in cm\\n    - sepal width in cm\\n    - petal length in cm\\n    - petal width in cm\\n    - class:\\n            - Iris-Setosa\\n            - Iris-Versicolour\\n            - Iris-Virginica\\n\\n:Summary Statistics:\\n\\n============== ==== ==== ======= ===== ====================\\n                Min  Max   Mean    SD   Class Correlation\\n============== ==== ==== ======= ===== ====================\\nsepal length:   4.3  7.9   5.84   0.83    0.7826\\nsepal width:    2.0  4.4   3.05   0.43   -0.4194\\npetal length:   1.0  6.9   3.76   1.76    0.9490  (high!)\\npetal width:    0.1  2.5   1.20   0.76    0.9565  (high!)\\n============== ==== ==== ======= ===== ====================\\n\\n:Missing Attribute Values: None\\n:Class Distribution: 33.3% for each of 3 classes.\\n:Creator: R.A. Fisher\\n:Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)\\n:Date: July, 1988\\n\\nThe famous Iris database, first used by Sir R.A. Fisher. The dataset is taken\\nfrom Fisher\\'s paper. Note that it\\'s the same as in R, but not as in the UCI\\nMachine Learning Repository, which has two wrong data points.\\n\\nThis is perhaps the best known database to be found in the\\npattern recognition literature.  Fisher\\'s paper is a classic in the field and\\nis referenced frequently to this day.  (See Duda & Hart, for example.)  The\\ndata set contains 3 classes of 50 instances each, where each class refers to a\\ntype of iris plant.  One class is linearly separable from the other 2; the\\nlatter are NOT linearly separable from each other.\\n\\n|details-start|\\n**References**\\n|details-split|\\n\\n- Fisher, R.A. \"The use of multiple measurements in taxonomic problems\"\\n  Annual Eugenics, 7, Part II, 179-188 (1936); also in \"Contributions to\\n  Mathematical Statistics\" (John Wiley, NY, 1950).\\n- Duda, R.O., & Hart, P.E. (1973) Pattern Classification and Scene Analysis.\\n  (Q327.D83) John Wiley & Sons.  ISBN 0-471-22361-1.  See page 218.\\n- Dasarathy, B.V. (1980) \"Nosing Around the Neighborhood: A New System\\n  Structure and Classification Rule for Recognition in Partially Exposed\\n  Environments\".  IEEE Transactions on Pattern Analysis and Machine\\n  Intelligence, Vol. PAMI-2, No. 1, 67-71.\\n- Gates, G.W. (1972) \"The Reduced Nearest Neighbor Rule\".  IEEE Transactions\\n  on Information Theory, May 1972, 431-433.\\n- See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al\"s AUTOCLASS II\\n  conceptual clustering system finds 3 classes in the data.\\n- Many, many more ...\\n\\n|details-end|\\n',\n",
       " 'feature_names': ['sepal length (cm)',\n",
       "  'sepal width (cm)',\n",
       "  'petal length (cm)',\n",
       "  'petal width (cm)'],\n",
       " 'filename': 'iris.csv',\n",
       " 'data_module': 'sklearn.datasets.data'}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "3e30a676-d11a-443a-8904-5d9290dc4551",
   "metadata": {},
   "outputs": [],
   "source": [
    "url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "ede3e4e6-fdca-44b4-b82e-50a55a6efd4b",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv(url\n",
    "                 , names=['sepal length','sepal width','petal length','petal width','target'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6c68b41a-6207-4f56-b266-5729e869826f",
   "metadata": {},
   "source": [
    "## 通过numpy实现矩阵的标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d1a890cc-f9ca-44d0-a702-53282247cf37",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "052694b7-1c65-40ec-95b2-a2372a08a4b6",
   "metadata": {},
   "source": [
    "## 自己实现数据的标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "51d83618-d04c-4d6f-b0a0-5954a8dc2af6",
   "metadata": {},
   "outputs": [],
   "source": [
    "dat = iris['data'][:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b83158db-4af5-4b90-b778-a680501cef5d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.1, 4.9, 4.7, 4.6, 5. , 5.4, 4.6, 5. , 4.4, 4.9, 5.4, 4.8, 4.8,\n",
       "       4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1, 5.4, 5.1, 4.6, 5.1, 4.8, 5. ,\n",
       "       5. , 5.2, 5.2, 4.7, 4.8, 5.4, 5.2, 5.5, 4.9, 5. , 5.5, 4.9, 4.4,\n",
       "       5.1, 5. , 4.5, 4.4, 5. , 5.1, 4.8, 5.1, 4.6, 5.3, 5. , 7. , 6.4,\n",
       "       6.9, 5.5, 6.5, 5.7, 6.3, 4.9, 6.6, 5.2, 5. , 5.9, 6. , 6.1, 5.6,\n",
       "       6.7, 5.6, 5.8, 6.2, 5.6, 5.9, 6.1, 6.3, 6.1, 6.4, 6.6, 6.8, 6.7,\n",
       "       6. , 5.7, 5.5, 5.5, 5.8, 6. , 5.4, 6. , 6.7, 6.3, 5.6, 5.5, 5.5,\n",
       "       6.1, 5.8, 5. , 5.6, 5.7, 5.7, 6.2, 5.1, 5.7, 6.3, 5.8, 7.1, 6.3,\n",
       "       6.5, 7.6, 4.9, 7.3, 6.7, 7.2, 6.5, 6.4, 6.8, 5.7, 5.8, 6.4, 6.5,\n",
       "       7.7, 7.7, 6. , 6.9, 5.6, 7.7, 6.3, 6.7, 7.2, 6.2, 6.1, 6.4, 7.2,\n",
       "       7.4, 7.9, 6.4, 6.3, 6.1, 7.7, 6.3, 6.4, 6. , 6.9, 6.7, 6.9, 5.8,\n",
       "       6.8, 6.7, 6.7, 6.3, 6.5, 6.2, 5.9])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "7896a1d7-ebf4-4505-8f9e-97f3a012499b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.843333333333334"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean = dat.mean()\n",
    "mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f5b1c8d9-25d7-4ec0-a386-8cfebc779303",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8253012917851409"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "std = dat.std()\n",
    "std"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "b2028287-f37b-418c-baf1-b02df79c3e64",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-0.90068117, -1.14301691, -1.38535265, -1.50652052, -1.02184904,\n",
       "       -0.53717756, -1.50652052, -1.02184904, -1.74885626, -1.14301691,\n",
       "       -0.53717756, -1.26418478, -1.26418478, -1.87002413, -0.05250608,\n",
       "       -0.17367395, -0.53717756, -0.90068117, -0.17367395, -0.90068117,\n",
       "       -0.53717756, -0.90068117, -1.50652052, -0.90068117, -1.26418478,\n",
       "       -1.02184904, -1.02184904, -0.7795133 , -0.7795133 , -1.38535265,\n",
       "       -1.26418478, -0.53717756, -0.7795133 , -0.41600969, -1.14301691,\n",
       "       -1.02184904, -0.41600969, -1.14301691, -1.74885626, -0.90068117,\n",
       "       -1.02184904, -1.62768839, -1.74885626, -1.02184904, -0.90068117,\n",
       "       -1.26418478, -0.90068117, -1.50652052, -0.65834543, -1.02184904,\n",
       "        1.40150837,  0.67450115,  1.2803405 , -0.41600969,  0.79566902,\n",
       "       -0.17367395,  0.55333328, -1.14301691,  0.91683689, -0.7795133 ,\n",
       "       -1.02184904,  0.06866179,  0.18982966,  0.31099753, -0.29484182,\n",
       "        1.03800476, -0.29484182, -0.05250608,  0.4321654 , -0.29484182,\n",
       "        0.06866179,  0.31099753,  0.55333328,  0.31099753,  0.67450115,\n",
       "        0.91683689,  1.15917263,  1.03800476,  0.18982966, -0.17367395,\n",
       "       -0.41600969, -0.41600969, -0.05250608,  0.18982966, -0.53717756,\n",
       "        0.18982966,  1.03800476,  0.55333328, -0.29484182, -0.41600969,\n",
       "       -0.41600969,  0.31099753, -0.05250608, -1.02184904, -0.29484182,\n",
       "       -0.17367395, -0.17367395,  0.4321654 , -0.90068117, -0.17367395,\n",
       "        0.55333328, -0.05250608,  1.52267624,  0.55333328,  0.79566902,\n",
       "        2.12851559, -1.14301691,  1.76501198,  1.03800476,  1.64384411,\n",
       "        0.79566902,  0.67450115,  1.15917263, -0.17367395, -0.05250608,\n",
       "        0.67450115,  0.79566902,  2.24968346,  2.24968346,  0.18982966,\n",
       "        1.2803405 , -0.29484182,  2.24968346,  0.55333328,  1.03800476,\n",
       "        1.64384411,  0.4321654 ,  0.31099753,  0.67450115,  1.64384411,\n",
       "        1.88617985,  2.4920192 ,  0.67450115,  0.55333328,  0.31099753,\n",
       "        2.24968346,  0.55333328,  0.67450115,  0.18982966,  1.2803405 ,\n",
       "        1.03800476,  1.2803405 , -0.05250608,  1.15917263,  1.03800476,\n",
       "        1.03800476,  0.55333328,  0.79566902,  0.4321654 ,  0.06866179])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 标准化\n",
    "standar = (dat - mean)/std\n",
    "standar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "fccff2b3-5af4-4317-924f-e5e51a339046",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[5.1, 3.5, 1.4, 0.2],\n",
       "       [4.9, 3. , 1.4, 0.2],\n",
       "       [4.7, 3.2, 1.3, 0.2],\n",
       "       [4.6, 3.1, 1.5, 0.2],\n",
       "       [5. , 3.6, 1.4, 0.2],\n",
       "       [5.4, 3.9, 1.7, 0.4],\n",
       "       [4.6, 3.4, 1.4, 0.3],\n",
       "       [5. , 3.4, 1.5, 0.2],\n",
       "       [4.4, 2.9, 1.4, 0.2],\n",
       "       [4.9, 3.1, 1.5, 0.1],\n",
       "       [5.4, 3.7, 1.5, 0.2],\n",
       "       [4.8, 3.4, 1.6, 0.2],\n",
       "       [4.8, 3. , 1.4, 0.1],\n",
       "       [4.3, 3. , 1.1, 0.1],\n",
       "       [5.8, 4. , 1.2, 0.2],\n",
       "       [5.7, 4.4, 1.5, 0.4],\n",
       "       [5.4, 3.9, 1.3, 0.4],\n",
       "       [5.1, 3.5, 1.4, 0.3],\n",
       "       [5.7, 3.8, 1.7, 0.3],\n",
       "       [5.1, 3.8, 1.5, 0.3],\n",
       "       [5.4, 3.4, 1.7, 0.2],\n",
       "       [5.1, 3.7, 1.5, 0.4],\n",
       "       [4.6, 3.6, 1. , 0.2],\n",
       "       [5.1, 3.3, 1.7, 0.5],\n",
       "       [4.8, 3.4, 1.9, 0.2],\n",
       "       [5. , 3. , 1.6, 0.2],\n",
       "       [5. , 3.4, 1.6, 0.4],\n",
       "       [5.2, 3.5, 1.5, 0.2],\n",
       "       [5.2, 3.4, 1.4, 0.2],\n",
       "       [4.7, 3.2, 1.6, 0.2],\n",
       "       [4.8, 3.1, 1.6, 0.2],\n",
       "       [5.4, 3.4, 1.5, 0.4],\n",
       "       [5.2, 4.1, 1.5, 0.1],\n",
       "       [5.5, 4.2, 1.4, 0.2],\n",
       "       [4.9, 3.1, 1.5, 0.2],\n",
       "       [5. , 3.2, 1.2, 0.2],\n",
       "       [5.5, 3.5, 1.3, 0.2],\n",
       "       [4.9, 3.6, 1.4, 0.1],\n",
       "       [4.4, 3. , 1.3, 0.2],\n",
       "       [5.1, 3.4, 1.5, 0.2],\n",
       "       [5. , 3.5, 1.3, 0.3],\n",
       "       [4.5, 2.3, 1.3, 0.3],\n",
       "       [4.4, 3.2, 1.3, 0.2],\n",
       "       [5. , 3.5, 1.6, 0.6],\n",
       "       [5.1, 3.8, 1.9, 0.4],\n",
       "       [4.8, 3. , 1.4, 0.3],\n",
       "       [5.1, 3.8, 1.6, 0.2],\n",
       "       [4.6, 3.2, 1.4, 0.2],\n",
       "       [5.3, 3.7, 1.5, 0.2],\n",
       "       [5. , 3.3, 1.4, 0.2],\n",
       "       [7. , 3.2, 4.7, 1.4],\n",
       "       [6.4, 3.2, 4.5, 1.5],\n",
       "       [6.9, 3.1, 4.9, 1.5],\n",
       "       [5.5, 2.3, 4. , 1.3],\n",
       "       [6.5, 2.8, 4.6, 1.5],\n",
       "       [5.7, 2.8, 4.5, 1.3],\n",
       "       [6.3, 3.3, 4.7, 1.6],\n",
       "       [4.9, 2.4, 3.3, 1. ],\n",
       "       [6.6, 2.9, 4.6, 1.3],\n",
       "       [5.2, 2.7, 3.9, 1.4],\n",
       "       [5. , 2. , 3.5, 1. ],\n",
       "       [5.9, 3. , 4.2, 1.5],\n",
       "       [6. , 2.2, 4. , 1. ],\n",
       "       [6.1, 2.9, 4.7, 1.4],\n",
       "       [5.6, 2.9, 3.6, 1.3],\n",
       "       [6.7, 3.1, 4.4, 1.4],\n",
       "       [5.6, 3. , 4.5, 1.5],\n",
       "       [5.8, 2.7, 4.1, 1. ],\n",
       "       [6.2, 2.2, 4.5, 1.5],\n",
       "       [5.6, 2.5, 3.9, 1.1],\n",
       "       [5.9, 3.2, 4.8, 1.8],\n",
       "       [6.1, 2.8, 4. , 1.3],\n",
       "       [6.3, 2.5, 4.9, 1.5],\n",
       "       [6.1, 2.8, 4.7, 1.2],\n",
       "       [6.4, 2.9, 4.3, 1.3],\n",
       "       [6.6, 3. , 4.4, 1.4],\n",
       "       [6.8, 2.8, 4.8, 1.4],\n",
       "       [6.7, 3. , 5. , 1.7],\n",
       "       [6. , 2.9, 4.5, 1.5],\n",
       "       [5.7, 2.6, 3.5, 1. ],\n",
       "       [5.5, 2.4, 3.8, 1.1],\n",
       "       [5.5, 2.4, 3.7, 1. ],\n",
       "       [5.8, 2.7, 3.9, 1.2],\n",
       "       [6. , 2.7, 5.1, 1.6],\n",
       "       [5.4, 3. , 4.5, 1.5],\n",
       "       [6. , 3.4, 4.5, 1.6],\n",
       "       [6.7, 3.1, 4.7, 1.5],\n",
       "       [6.3, 2.3, 4.4, 1.3],\n",
       "       [5.6, 3. , 4.1, 1.3],\n",
       "       [5.5, 2.5, 4. , 1.3],\n",
       "       [5.5, 2.6, 4.4, 1.2],\n",
       "       [6.1, 3. , 4.6, 1.4],\n",
       "       [5.8, 2.6, 4. , 1.2],\n",
       "       [5. , 2.3, 3.3, 1. ],\n",
       "       [5.6, 2.7, 4.2, 1.3],\n",
       "       [5.7, 3. , 4.2, 1.2],\n",
       "       [5.7, 2.9, 4.2, 1.3],\n",
       "       [6.2, 2.9, 4.3, 1.3],\n",
       "       [5.1, 2.5, 3. , 1.1],\n",
       "       [5.7, 2.8, 4.1, 1.3],\n",
       "       [6.3, 3.3, 6. , 2.5],\n",
       "       [5.8, 2.7, 5.1, 1.9],\n",
       "       [7.1, 3. , 5.9, 2.1],\n",
       "       [6.3, 2.9, 5.6, 1.8],\n",
       "       [6.5, 3. , 5.8, 2.2],\n",
       "       [7.6, 3. , 6.6, 2.1],\n",
       "       [4.9, 2.5, 4.5, 1.7],\n",
       "       [7.3, 2.9, 6.3, 1.8],\n",
       "       [6.7, 2.5, 5.8, 1.8],\n",
       "       [7.2, 3.6, 6.1, 2.5],\n",
       "       [6.5, 3.2, 5.1, 2. ],\n",
       "       [6.4, 2.7, 5.3, 1.9],\n",
       "       [6.8, 3. , 5.5, 2.1],\n",
       "       [5.7, 2.5, 5. , 2. ],\n",
       "       [5.8, 2.8, 5.1, 2.4],\n",
       "       [6.4, 3.2, 5.3, 2.3],\n",
       "       [6.5, 3. , 5.5, 1.8],\n",
       "       [7.7, 3.8, 6.7, 2.2],\n",
       "       [7.7, 2.6, 6.9, 2.3],\n",
       "       [6. , 2.2, 5. , 1.5],\n",
       "       [6.9, 3.2, 5.7, 2.3],\n",
       "       [5.6, 2.8, 4.9, 2. ],\n",
       "       [7.7, 2.8, 6.7, 2. ],\n",
       "       [6.3, 2.7, 4.9, 1.8],\n",
       "       [6.7, 3.3, 5.7, 2.1],\n",
       "       [7.2, 3.2, 6. , 1.8],\n",
       "       [6.2, 2.8, 4.8, 1.8],\n",
       "       [6.1, 3. , 4.9, 1.8],\n",
       "       [6.4, 2.8, 5.6, 2.1],\n",
       "       [7.2, 3. , 5.8, 1.6],\n",
       "       [7.4, 2.8, 6.1, 1.9],\n",
       "       [7.9, 3.8, 6.4, 2. ],\n",
       "       [6.4, 2.8, 5.6, 2.2],\n",
       "       [6.3, 2.8, 5.1, 1.5],\n",
       "       [6.1, 2.6, 5.6, 1.4],\n",
       "       [7.7, 3. , 6.1, 2.3],\n",
       "       [6.3, 3.4, 5.6, 2.4],\n",
       "       [6.4, 3.1, 5.5, 1.8],\n",
       "       [6. , 3. , 4.8, 1.8],\n",
       "       [6.9, 3.1, 5.4, 2.1],\n",
       "       [6.7, 3.1, 5.6, 2.4],\n",
       "       [6.9, 3.1, 5.1, 2.3],\n",
       "       [5.8, 2.7, 5.1, 1.9],\n",
       "       [6.8, 3.2, 5.9, 2.3],\n",
       "       [6.7, 3.3, 5.7, 2.5],\n",
       "       [6.7, 3. , 5.2, 2.3],\n",
       "       [6.3, 2.5, 5. , 1.9],\n",
       "       [6.5, 3. , 5.2, 2. ],\n",
       "       [6.2, 3.4, 5.4, 2.3],\n",
       "       [5.9, 3. , 5.1, 1.8]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris['data']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "24465ede-f978-46ba-a1ae-3afcae2bd815",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = StandardScaler().fit_transform(iris['data'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "f7fd86b2-ded9-4662-b7d3-c59e034a07d9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-9.00681170e-01,  1.01900435e+00, -1.34022653e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.14301691e+00, -1.31979479e-01, -1.34022653e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.38535265e+00,  3.28414053e-01, -1.39706395e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.50652052e+00,  9.82172869e-02, -1.28338910e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.02184904e+00,  1.24920112e+00, -1.34022653e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-5.37177559e-01,  1.93979142e+00, -1.16971425e+00,\n",
       "        -1.05217993e+00],\n",
       "       [-1.50652052e+00,  7.88807586e-01, -1.34022653e+00,\n",
       "        -1.18381211e+00],\n",
       "       [-1.02184904e+00,  7.88807586e-01, -1.28338910e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.74885626e+00, -3.62176246e-01, -1.34022653e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.14301691e+00,  9.82172869e-02, -1.28338910e+00,\n",
       "        -1.44707648e+00],\n",
       "       [-5.37177559e-01,  1.47939788e+00, -1.28338910e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.26418478e+00,  7.88807586e-01, -1.22655167e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.26418478e+00, -1.31979479e-01, -1.34022653e+00,\n",
       "        -1.44707648e+00],\n",
       "       [-1.87002413e+00, -1.31979479e-01, -1.51073881e+00,\n",
       "        -1.44707648e+00],\n",
       "       [-5.25060772e-02,  2.16998818e+00, -1.45390138e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.73673948e-01,  3.09077525e+00, -1.28338910e+00,\n",
       "        -1.05217993e+00],\n",
       "       [-5.37177559e-01,  1.93979142e+00, -1.39706395e+00,\n",
       "        -1.05217993e+00],\n",
       "       [-9.00681170e-01,  1.01900435e+00, -1.34022653e+00,\n",
       "        -1.18381211e+00],\n",
       "       [-1.73673948e-01,  1.70959465e+00, -1.16971425e+00,\n",
       "        -1.18381211e+00],\n",
       "       [-9.00681170e-01,  1.70959465e+00, -1.28338910e+00,\n",
       "        -1.18381211e+00],\n",
       "       [-5.37177559e-01,  7.88807586e-01, -1.16971425e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-9.00681170e-01,  1.47939788e+00, -1.28338910e+00,\n",
       "        -1.05217993e+00],\n",
       "       [-1.50652052e+00,  1.24920112e+00, -1.56757623e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-9.00681170e-01,  5.58610819e-01, -1.16971425e+00,\n",
       "        -9.20547742e-01],\n",
       "       [-1.26418478e+00,  7.88807586e-01, -1.05603939e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.02184904e+00, -1.31979479e-01, -1.22655167e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.02184904e+00,  7.88807586e-01, -1.22655167e+00,\n",
       "        -1.05217993e+00],\n",
       "       [-7.79513300e-01,  1.01900435e+00, -1.28338910e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-7.79513300e-01,  7.88807586e-01, -1.34022653e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.38535265e+00,  3.28414053e-01, -1.22655167e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.26418478e+00,  9.82172869e-02, -1.22655167e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-5.37177559e-01,  7.88807586e-01, -1.28338910e+00,\n",
       "        -1.05217993e+00],\n",
       "       [-7.79513300e-01,  2.40018495e+00, -1.28338910e+00,\n",
       "        -1.44707648e+00],\n",
       "       [-4.16009689e-01,  2.63038172e+00, -1.34022653e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.14301691e+00,  9.82172869e-02, -1.28338910e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.02184904e+00,  3.28414053e-01, -1.45390138e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-4.16009689e-01,  1.01900435e+00, -1.39706395e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.14301691e+00,  1.24920112e+00, -1.34022653e+00,\n",
       "        -1.44707648e+00],\n",
       "       [-1.74885626e+00, -1.31979479e-01, -1.39706395e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-9.00681170e-01,  7.88807586e-01, -1.28338910e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.02184904e+00,  1.01900435e+00, -1.39706395e+00,\n",
       "        -1.18381211e+00],\n",
       "       [-1.62768839e+00, -1.74335684e+00, -1.39706395e+00,\n",
       "        -1.18381211e+00],\n",
       "       [-1.74885626e+00,  3.28414053e-01, -1.39706395e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.02184904e+00,  1.01900435e+00, -1.22655167e+00,\n",
       "        -7.88915558e-01],\n",
       "       [-9.00681170e-01,  1.70959465e+00, -1.05603939e+00,\n",
       "        -1.05217993e+00],\n",
       "       [-1.26418478e+00, -1.31979479e-01, -1.34022653e+00,\n",
       "        -1.18381211e+00],\n",
       "       [-9.00681170e-01,  1.70959465e+00, -1.22655167e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.50652052e+00,  3.28414053e-01, -1.34022653e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-6.58345429e-01,  1.47939788e+00, -1.28338910e+00,\n",
       "        -1.31544430e+00],\n",
       "       [-1.02184904e+00,  5.58610819e-01, -1.34022653e+00,\n",
       "        -1.31544430e+00],\n",
       "       [ 1.40150837e+00,  3.28414053e-01,  5.35408562e-01,\n",
       "         2.64141916e-01],\n",
       "       [ 6.74501145e-01,  3.28414053e-01,  4.21733708e-01,\n",
       "         3.95774101e-01],\n",
       "       [ 1.28034050e+00,  9.82172869e-02,  6.49083415e-01,\n",
       "         3.95774101e-01],\n",
       "       [-4.16009689e-01, -1.74335684e+00,  1.37546573e-01,\n",
       "         1.32509732e-01],\n",
       "       [ 7.95669016e-01, -5.92373012e-01,  4.78571135e-01,\n",
       "         3.95774101e-01],\n",
       "       [-1.73673948e-01, -5.92373012e-01,  4.21733708e-01,\n",
       "         1.32509732e-01],\n",
       "       [ 5.53333275e-01,  5.58610819e-01,  5.35408562e-01,\n",
       "         5.27406285e-01],\n",
       "       [-1.14301691e+00, -1.51316008e+00, -2.60315415e-01,\n",
       "        -2.62386821e-01],\n",
       "       [ 9.16836886e-01, -3.62176246e-01,  4.78571135e-01,\n",
       "         1.32509732e-01],\n",
       "       [-7.79513300e-01, -8.22569778e-01,  8.07091462e-02,\n",
       "         2.64141916e-01],\n",
       "       [-1.02184904e+00, -2.43394714e+00, -1.46640561e-01,\n",
       "        -2.62386821e-01],\n",
       "       [ 6.86617933e-02, -1.31979479e-01,  2.51221427e-01,\n",
       "         3.95774101e-01],\n",
       "       [ 1.89829664e-01, -1.97355361e+00,  1.37546573e-01,\n",
       "        -2.62386821e-01],\n",
       "       [ 3.10997534e-01, -3.62176246e-01,  5.35408562e-01,\n",
       "         2.64141916e-01],\n",
       "       [-2.94841818e-01, -3.62176246e-01, -8.98031345e-02,\n",
       "         1.32509732e-01],\n",
       "       [ 1.03800476e+00,  9.82172869e-02,  3.64896281e-01,\n",
       "         2.64141916e-01],\n",
       "       [-2.94841818e-01, -1.31979479e-01,  4.21733708e-01,\n",
       "         3.95774101e-01],\n",
       "       [-5.25060772e-02, -8.22569778e-01,  1.94384000e-01,\n",
       "        -2.62386821e-01],\n",
       "       [ 4.32165405e-01, -1.97355361e+00,  4.21733708e-01,\n",
       "         3.95774101e-01],\n",
       "       [-2.94841818e-01, -1.28296331e+00,  8.07091462e-02,\n",
       "        -1.30754636e-01],\n",
       "       [ 6.86617933e-02,  3.28414053e-01,  5.92245988e-01,\n",
       "         7.90670654e-01],\n",
       "       [ 3.10997534e-01, -5.92373012e-01,  1.37546573e-01,\n",
       "         1.32509732e-01],\n",
       "       [ 5.53333275e-01, -1.28296331e+00,  6.49083415e-01,\n",
       "         3.95774101e-01],\n",
       "       [ 3.10997534e-01, -5.92373012e-01,  5.35408562e-01,\n",
       "         8.77547895e-04],\n",
       "       [ 6.74501145e-01, -3.62176246e-01,  3.08058854e-01,\n",
       "         1.32509732e-01],\n",
       "       [ 9.16836886e-01, -1.31979479e-01,  3.64896281e-01,\n",
       "         2.64141916e-01],\n",
       "       [ 1.15917263e+00, -5.92373012e-01,  5.92245988e-01,\n",
       "         2.64141916e-01],\n",
       "       [ 1.03800476e+00, -1.31979479e-01,  7.05920842e-01,\n",
       "         6.59038469e-01],\n",
       "       [ 1.89829664e-01, -3.62176246e-01,  4.21733708e-01,\n",
       "         3.95774101e-01],\n",
       "       [-1.73673948e-01, -1.05276654e+00, -1.46640561e-01,\n",
       "        -2.62386821e-01],\n",
       "       [-4.16009689e-01, -1.51316008e+00,  2.38717193e-02,\n",
       "        -1.30754636e-01],\n",
       "       [-4.16009689e-01, -1.51316008e+00, -3.29657076e-02,\n",
       "        -2.62386821e-01],\n",
       "       [-5.25060772e-02, -8.22569778e-01,  8.07091462e-02,\n",
       "         8.77547895e-04],\n",
       "       [ 1.89829664e-01, -8.22569778e-01,  7.62758269e-01,\n",
       "         5.27406285e-01],\n",
       "       [-5.37177559e-01, -1.31979479e-01,  4.21733708e-01,\n",
       "         3.95774101e-01],\n",
       "       [ 1.89829664e-01,  7.88807586e-01,  4.21733708e-01,\n",
       "         5.27406285e-01],\n",
       "       [ 1.03800476e+00,  9.82172869e-02,  5.35408562e-01,\n",
       "         3.95774101e-01],\n",
       "       [ 5.53333275e-01, -1.74335684e+00,  3.64896281e-01,\n",
       "         1.32509732e-01],\n",
       "       [-2.94841818e-01, -1.31979479e-01,  1.94384000e-01,\n",
       "         1.32509732e-01],\n",
       "       [-4.16009689e-01, -1.28296331e+00,  1.37546573e-01,\n",
       "         1.32509732e-01],\n",
       "       [-4.16009689e-01, -1.05276654e+00,  3.64896281e-01,\n",
       "         8.77547895e-04],\n",
       "       [ 3.10997534e-01, -1.31979479e-01,  4.78571135e-01,\n",
       "         2.64141916e-01],\n",
       "       [-5.25060772e-02, -1.05276654e+00,  1.37546573e-01,\n",
       "         8.77547895e-04],\n",
       "       [-1.02184904e+00, -1.74335684e+00, -2.60315415e-01,\n",
       "        -2.62386821e-01],\n",
       "       [-2.94841818e-01, -8.22569778e-01,  2.51221427e-01,\n",
       "         1.32509732e-01],\n",
       "       [-1.73673948e-01, -1.31979479e-01,  2.51221427e-01,\n",
       "         8.77547895e-04],\n",
       "       [-1.73673948e-01, -3.62176246e-01,  2.51221427e-01,\n",
       "         1.32509732e-01],\n",
       "       [ 4.32165405e-01, -3.62176246e-01,  3.08058854e-01,\n",
       "         1.32509732e-01],\n",
       "       [-9.00681170e-01, -1.28296331e+00, -4.30827696e-01,\n",
       "        -1.30754636e-01],\n",
       "       [-1.73673948e-01, -5.92373012e-01,  1.94384000e-01,\n",
       "         1.32509732e-01],\n",
       "       [ 5.53333275e-01,  5.58610819e-01,  1.27429511e+00,\n",
       "         1.71209594e+00],\n",
       "       [-5.25060772e-02, -8.22569778e-01,  7.62758269e-01,\n",
       "         9.22302838e-01],\n",
       "       [ 1.52267624e+00, -1.31979479e-01,  1.21745768e+00,\n",
       "         1.18556721e+00],\n",
       "       [ 5.53333275e-01, -3.62176246e-01,  1.04694540e+00,\n",
       "         7.90670654e-01],\n",
       "       [ 7.95669016e-01, -1.31979479e-01,  1.16062026e+00,\n",
       "         1.31719939e+00],\n",
       "       [ 2.12851559e+00, -1.31979479e-01,  1.61531967e+00,\n",
       "         1.18556721e+00],\n",
       "       [-1.14301691e+00, -1.28296331e+00,  4.21733708e-01,\n",
       "         6.59038469e-01],\n",
       "       [ 1.76501198e+00, -3.62176246e-01,  1.44480739e+00,\n",
       "         7.90670654e-01],\n",
       "       [ 1.03800476e+00, -1.28296331e+00,  1.16062026e+00,\n",
       "         7.90670654e-01],\n",
       "       [ 1.64384411e+00,  1.24920112e+00,  1.33113254e+00,\n",
       "         1.71209594e+00],\n",
       "       [ 7.95669016e-01,  3.28414053e-01,  7.62758269e-01,\n",
       "         1.05393502e+00],\n",
       "       [ 6.74501145e-01, -8.22569778e-01,  8.76433123e-01,\n",
       "         9.22302838e-01],\n",
       "       [ 1.15917263e+00, -1.31979479e-01,  9.90107977e-01,\n",
       "         1.18556721e+00],\n",
       "       [-1.73673948e-01, -1.28296331e+00,  7.05920842e-01,\n",
       "         1.05393502e+00],\n",
       "       [-5.25060772e-02, -5.92373012e-01,  7.62758269e-01,\n",
       "         1.58046376e+00],\n",
       "       [ 6.74501145e-01,  3.28414053e-01,  8.76433123e-01,\n",
       "         1.44883158e+00],\n",
       "       [ 7.95669016e-01, -1.31979479e-01,  9.90107977e-01,\n",
       "         7.90670654e-01],\n",
       "       [ 2.24968346e+00,  1.70959465e+00,  1.67215710e+00,\n",
       "         1.31719939e+00],\n",
       "       [ 2.24968346e+00, -1.05276654e+00,  1.78583195e+00,\n",
       "         1.44883158e+00],\n",
       "       [ 1.89829664e-01, -1.97355361e+00,  7.05920842e-01,\n",
       "         3.95774101e-01],\n",
       "       [ 1.28034050e+00,  3.28414053e-01,  1.10378283e+00,\n",
       "         1.44883158e+00],\n",
       "       [-2.94841818e-01, -5.92373012e-01,  6.49083415e-01,\n",
       "         1.05393502e+00],\n",
       "       [ 2.24968346e+00, -5.92373012e-01,  1.67215710e+00,\n",
       "         1.05393502e+00],\n",
       "       [ 5.53333275e-01, -8.22569778e-01,  6.49083415e-01,\n",
       "         7.90670654e-01],\n",
       "       [ 1.03800476e+00,  5.58610819e-01,  1.10378283e+00,\n",
       "         1.18556721e+00],\n",
       "       [ 1.64384411e+00,  3.28414053e-01,  1.27429511e+00,\n",
       "         7.90670654e-01],\n",
       "       [ 4.32165405e-01, -5.92373012e-01,  5.92245988e-01,\n",
       "         7.90670654e-01],\n",
       "       [ 3.10997534e-01, -1.31979479e-01,  6.49083415e-01,\n",
       "         7.90670654e-01],\n",
       "       [ 6.74501145e-01, -5.92373012e-01,  1.04694540e+00,\n",
       "         1.18556721e+00],\n",
       "       [ 1.64384411e+00, -1.31979479e-01,  1.16062026e+00,\n",
       "         5.27406285e-01],\n",
       "       [ 1.88617985e+00, -5.92373012e-01,  1.33113254e+00,\n",
       "         9.22302838e-01],\n",
       "       [ 2.49201920e+00,  1.70959465e+00,  1.50164482e+00,\n",
       "         1.05393502e+00],\n",
       "       [ 6.74501145e-01, -5.92373012e-01,  1.04694540e+00,\n",
       "         1.31719939e+00],\n",
       "       [ 5.53333275e-01, -5.92373012e-01,  7.62758269e-01,\n",
       "         3.95774101e-01],\n",
       "       [ 3.10997534e-01, -1.05276654e+00,  1.04694540e+00,\n",
       "         2.64141916e-01],\n",
       "       [ 2.24968346e+00, -1.31979479e-01,  1.33113254e+00,\n",
       "         1.44883158e+00],\n",
       "       [ 5.53333275e-01,  7.88807586e-01,  1.04694540e+00,\n",
       "         1.58046376e+00],\n",
       "       [ 6.74501145e-01,  9.82172869e-02,  9.90107977e-01,\n",
       "         7.90670654e-01],\n",
       "       [ 1.89829664e-01, -1.31979479e-01,  5.92245988e-01,\n",
       "         7.90670654e-01],\n",
       "       [ 1.28034050e+00,  9.82172869e-02,  9.33270550e-01,\n",
       "         1.18556721e+00],\n",
       "       [ 1.03800476e+00,  9.82172869e-02,  1.04694540e+00,\n",
       "         1.58046376e+00],\n",
       "       [ 1.28034050e+00,  9.82172869e-02,  7.62758269e-01,\n",
       "         1.44883158e+00],\n",
       "       [-5.25060772e-02, -8.22569778e-01,  7.62758269e-01,\n",
       "         9.22302838e-01],\n",
       "       [ 1.15917263e+00,  3.28414053e-01,  1.21745768e+00,\n",
       "         1.44883158e+00],\n",
       "       [ 1.03800476e+00,  5.58610819e-01,  1.10378283e+00,\n",
       "         1.71209594e+00],\n",
       "       [ 1.03800476e+00, -1.31979479e-01,  8.19595696e-01,\n",
       "         1.44883158e+00],\n",
       "       [ 5.53333275e-01, -1.28296331e+00,  7.05920842e-01,\n",
       "         9.22302838e-01],\n",
       "       [ 7.95669016e-01, -1.31979479e-01,  8.19595696e-01,\n",
       "         1.05393502e+00],\n",
       "       [ 4.32165405e-01,  7.88807586e-01,  9.33270550e-01,\n",
       "         1.44883158e+00],\n",
       "       [ 6.86617933e-02, -1.31979479e-01,  7.62758269e-01,\n",
       "         7.90670654e-01]])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65c8d48a-1382-4802-aea4-20f94db318af",
   "metadata": {},
   "source": [
    "#  投影 Projection          （降维）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "0ad04a1d-5869-445d-9126-9945b1847851",
   "metadata": {},
   "outputs": [],
   "source": [
    "pca = PCA(n_components=2)           #鸢尾花模型是4维，降为2维\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "bf06eb1a-2228-4842-8826-6af56f152e31",
   "metadata": {},
   "outputs": [],
   "source": [
    "principalComponents = pca.fit_transform(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "2585ff2a-deee-45b5-92f9-404a58936255",
   "metadata": {},
   "outputs": [],
   "source": [
    "principalDf = pd.DataFrame(data = principalComponents\n",
    "             , columns = ['principal component 1', 'principal component 2'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "5ac6adb5-1d90-4fe5-b528-915323f457b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>principal component 1</th>\n",
       "      <th>principal component 2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-2.264703</td>\n",
       "      <td>0.480027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-2.080961</td>\n",
       "      <td>-0.674134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-2.364229</td>\n",
       "      <td>-0.341908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-2.299384</td>\n",
       "      <td>-0.597395</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-2.389842</td>\n",
       "      <td>0.646835</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   principal component 1  principal component 2\n",
       "0              -2.264703               0.480027\n",
       "1              -2.080961              -0.674134\n",
       "2              -2.364229              -0.341908\n",
       "3              -2.299384              -0.597395\n",
       "4              -2.389842               0.646835"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "principalDf.head(5)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "a3526dbe-88ad-4d38-9df1-c41237c0f624",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>principal component 1</th>\n",
       "      <th>principal component 2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-2.264703</td>\n",
       "      <td>0.480027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-2.080961</td>\n",
       "      <td>-0.674134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-2.364229</td>\n",
       "      <td>-0.341908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-2.299384</td>\n",
       "      <td>-0.597395</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-2.389842</td>\n",
       "      <td>0.646835</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>145</th>\n",
       "      <td>1.870503</td>\n",
       "      <td>0.386966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146</th>\n",
       "      <td>1.564580</td>\n",
       "      <td>-0.896687</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>147</th>\n",
       "      <td>1.521170</td>\n",
       "      <td>0.269069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>148</th>\n",
       "      <td>1.372788</td>\n",
       "      <td>1.011254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>149</th>\n",
       "      <td>0.960656</td>\n",
       "      <td>-0.024332</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>150 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     principal component 1  principal component 2\n",
       "0                -2.264703               0.480027\n",
       "1                -2.080961              -0.674134\n",
       "2                -2.364229              -0.341908\n",
       "3                -2.299384              -0.597395\n",
       "4                -2.389842               0.646835\n",
       "..                     ...                    ...\n",
       "145               1.870503               0.386966\n",
       "146               1.564580              -0.896687\n",
       "147               1.521170               0.269069\n",
       "148               1.372788               1.011254\n",
       "149               0.960656              -0.024332\n",
       "\n",
       "[150 rows x 2 columns]"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "principalDf"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9ad03720-55a4-45d1-bc1b-eba2bdaa0192",
   "metadata": {},
   "source": [
    "# 随机森林处理鸢尾花"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "e0423597-4db4-403f-9408-2ddbed8f2728",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "980a1257-3398-446b-b246-95c60113b053",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;RandomForestClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier()</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "RandomForestClassifier()"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split( principalDf, iris.target, test_size=0.3, random_state=420)\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "# 通过RandomForestClassifier类定义一个随机森林模型，名字叫rf\n",
    "rf = RandomForestClassifier(n_estimators = 100)\n",
    "\n",
    "# 对lr模型进行训练(fit)\n",
    "rf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "aa591f34-2af7-4336-9b06-4e046505b20f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "分类评估汇总报告:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      1.00      1.00        15\n",
      "           1       1.00      0.85      0.92        20\n",
      "           2       0.77      1.00      0.87        10\n",
      "\n",
      "    accuracy                           0.93        45\n",
      "   macro avg       0.92      0.95      0.93        45\n",
      "weighted avg       0.95      0.93      0.93        45\n",
      "\n",
      "误分类矩阵:\n",
      " [[15  0  0]\n",
      " [ 0 17  3]\n",
      " [ 0  0 10]]\n",
      "平均AUC值: 0.9967619047619047\n"
     ]
    }
   ],
   "source": [
    "# 查看特征的重要性排序\n",
    "import pandas as pd\n",
    "features = pd.DataFrame()\n",
    "features['feature'] = X_train.columns\n",
    "features['importance'] = rf.feature_importances_\n",
    "features = features.sort_values(by =['importance'], ascending=False)\n",
    "\n",
    "# 显示最重要的前10个特征变量\n",
    "features.head(10)\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import roc_auc_score\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import auc\n",
    "# 利用模型对测试集进行预测，输出target预测标签值和概率\n",
    "y_test_pred = rf.predict(X_test)\n",
    "y_test_prob = rf.predict_proba(X_test)\n",
    "\n",
    "print('分类评估汇总报告:\\n',classification_report(y_test,y_test_pred))\n",
    "print('误分类矩阵:\\n',confusion_matrix(y_test,y_test_pred))                \n",
    "\n",
    "\n",
    "\n",
    "# 由于是十分类问题，需要对每个类别分别计算AUC并求平均\n",
    "n_classes = len(np.unique(y_test))\n",
    "auc_scores = []\n",
    "for i in range(n_classes):\n",
    "    # 提取当前类别为正类时的预测概率和真实标签\n",
    "    y_test_binary = (y_test == i).astype(int)\n",
    "    y_test_prob_binary = y_test_prob[:, i]\n",
    "\n",
    "    # 计算当前类别的AUC值\n",
    "    auc = roc_auc_score(y_test_binary, y_test_prob_binary)\n",
    "    auc_scores.append(auc)\n",
    "\n",
    "# 计算平均AUC值\n",
    "average_auc = np.mean(auc_scores)\n",
    "print(\"平均AUC值:\", average_auc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e5e07770-4d50-4ee3-a6d6-6145988932aa",
   "metadata": {},
   "source": [
    "# 处理天文光谱数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "fc7fa20e-548a-45a7-a344-2efa9e9dd23b",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Reading in LAMOST data...\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "print(\"Reading in LAMOST data...\")\n",
    "X = np.load('fluxs.npy')\n",
    "y = np.load('sclss.npy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "6f96e35e-13cd-4da1-9be7-0d8628c2e276",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(700, 3700)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "e5c9fcd8-ece1-4874-be2b-41847e41d98b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.64488655, 0.64488655, 0.64488655, ..., 0.16166192, 0.16082986,\n",
       "        0.16082986],\n",
       "       [0.52360463, 0.52360463, 0.52360463, ..., 0.07325829, 0.07325829,\n",
       "        0.07325829],\n",
       "       [0.5422894 , 0.526775  , 0.5422894 , ..., 0.05806394, 0.05806394,\n",
       "        0.05806394],\n",
       "       ...,\n",
       "       [0.00095674, 0.00095674, 0.00095674, ..., 0.00380735, 0.00411819,\n",
       "        0.00411819],\n",
       "       [0.4260177 , 0.4260177 , 0.4025868 , ..., 0.17916383, 0.17916383,\n",
       "        0.17916383],\n",
       "       [0.47431758, 0.47431758, 0.47431758, ..., 0.080699  , 0.06419416,\n",
       "        0.06419416]], dtype=float32)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2382b64d-c1d6-4dd0-8993-6b7ab59ff541",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['B', 'F', 'F', 'A', 'G', 'K', 'O', 'B', 'M', 'O', 'G', 'M', 'F',\n",
       "       'K', 'G', 'F', 'F', 'O', 'B', 'G', 'F', 'G', 'B', 'O', 'A', 'K',\n",
       "       'M', 'A', 'F', 'F', 'F', 'G', 'F', 'A', 'K', 'G', 'A', 'G', 'K',\n",
       "       'K', 'K', 'A', 'K', 'G', 'G', 'F', 'A', 'M', 'B', 'F', 'K', 'B',\n",
       "       'G', 'F', 'F', 'O', 'O', 'M', 'F', 'A', 'O', 'G', 'O', 'O', 'K',\n",
       "       'F', 'G', 'A', 'A', 'B', 'G', 'F', 'G', 'F', 'M', 'K', 'A', 'B',\n",
       "       'B', 'G', 'K', 'K', 'M', 'M', 'A', 'G', 'K', 'M', 'B', 'K', 'G',\n",
       "       'G', 'B', 'O', 'B', 'B', 'O', 'F', 'G', 'B', 'O', 'K', 'O', 'G',\n",
       "       'K', 'B', 'O', 'G', 'A', 'K', 'M', 'F', 'A', 'F', 'F', 'A', 'M',\n",
       "       'B', 'A', 'O', 'O', 'F', 'K', 'A', 'O', 'K', 'M', 'A', 'M', 'G',\n",
       "       'O', 'K', 'A', 'M', 'K', 'O', 'F', 'B', 'F', 'B', 'M', 'O', 'O',\n",
       "       'K', 'O', 'M', 'K', 'A', 'M', 'O', 'G', 'O', 'B', 'O', 'A', 'K',\n",
       "       'G', 'B', 'K', 'F', 'A', 'M', 'B', 'M', 'G', 'G', 'O', 'F', 'O',\n",
       "       'B', 'O', 'K', 'M', 'A', 'O', 'F', 'M', 'A', 'G', 'O', 'A', 'K',\n",
       "       'F', 'M', 'O', 'F', 'F', 'F', 'K', 'G', 'O', 'O', 'O', 'F', 'K',\n",
       "       'B', 'F', 'G', 'M', 'F', 'M', 'B', 'A', 'A', 'G', 'F', 'M', 'B',\n",
       "       'B', 'A', 'G', 'K', 'O', 'F', 'M', 'O', 'G', 'O', 'A', 'F', 'M',\n",
       "       'M', 'O', 'B', 'B', 'B', 'A', 'A', 'K', 'K', 'B', 'F', 'F', 'F',\n",
       "       'F', 'G', 'M', 'B', 'O', 'M', 'M', 'G', 'G', 'F', 'A', 'K', 'G',\n",
       "       'B', 'A', 'O', 'O', 'G', 'A', 'F', 'B', 'M', 'A', 'B', 'G', 'F',\n",
       "       'A', 'G', 'K', 'G', 'A', 'A', 'M', 'B', 'A', 'K', 'K', 'B', 'K',\n",
       "       'O', 'A', 'F', 'A', 'M', 'O', 'A', 'G', 'M', 'G', 'F', 'M', 'K',\n",
       "       'B', 'F', 'K', 'B', 'G', 'A', 'A', 'F', 'A', 'B', 'A', 'G', 'G',\n",
       "       'A', 'A', 'A', 'O', 'F', 'M', 'B', 'F', 'F', 'M', 'M', 'G', 'K',\n",
       "       'K', 'F', 'B', 'A', 'G', 'B', 'B', 'M', 'A', 'K', 'B', 'M', 'G',\n",
       "       'K', 'B', 'O', 'A', 'F', 'F', 'M', 'F', 'G', 'G', 'K', 'G', 'M',\n",
       "       'M', 'K', 'G', 'A', 'F', 'K', 'B', 'B', 'G', 'G', 'G', 'B', 'A',\n",
       "       'M', 'M', 'F', 'O', 'K', 'A', 'G', 'K', 'K', 'B', 'M', 'B', 'M',\n",
       "       'A', 'F', 'G', 'F', 'B', 'K', 'B', 'K', 'O', 'F', 'O', 'G', 'A',\n",
       "       'A', 'K', 'K', 'B', 'B', 'K', 'O', 'G', 'O', 'M', 'A', 'F', 'O',\n",
       "       'A', 'K', 'M', 'M', 'A', 'G', 'F', 'A', 'G', 'M', 'K', 'B', 'O',\n",
       "       'A', 'B', 'K', 'O', 'B', 'K', 'G', 'F', 'F', 'F', 'G', 'M', 'G',\n",
       "       'F', 'O', 'B', 'O', 'K', 'K', 'G', 'O', 'A', 'K', 'O', 'G', 'G',\n",
       "       'G', 'M', 'K', 'M', 'B', 'G', 'F', 'K', 'K', 'M', 'B', 'O', 'B',\n",
       "       'A', 'O', 'F', 'F', 'A', 'G', 'O', 'O', 'B', 'O', 'K', 'A', 'F',\n",
       "       'O', 'F', 'F', 'A', 'K', 'F', 'K', 'G', 'B', 'F', 'O', 'B', 'G',\n",
       "       'F', 'G', 'O', 'G', 'G', 'M', 'F', 'A', 'O', 'M', 'B', 'G', 'M',\n",
       "       'B', 'M', 'F', 'B', 'A', 'A', 'F', 'K', 'K', 'K', 'A', 'B', 'K',\n",
       "       'F', 'F', 'B', 'O', 'B', 'K', 'M', 'K', 'K', 'K', 'O', 'M', 'O',\n",
       "       'B', 'A', 'B', 'A', 'B', 'G', 'B', 'M', 'M', 'G', 'K', 'F', 'G',\n",
       "       'O', 'F', 'K', 'A', 'B', 'G', 'B', 'O', 'F', 'G', 'O', 'K', 'K',\n",
       "       'O', 'K', 'F', 'B', 'F', 'M', 'K', 'M', 'A', 'G', 'A', 'O', 'B',\n",
       "       'B', 'B', 'A', 'F', 'K', 'O', 'B', 'A', 'A', 'M', 'M', 'A', 'B',\n",
       "       'G', 'B', 'M', 'O', 'K', 'K', 'O', 'A', 'G', 'M', 'G', 'O', 'B',\n",
       "       'M', 'M', 'O', 'G', 'A', 'M', 'O', 'B', 'K', 'M', 'O', 'O', 'G',\n",
       "       'A', 'A', 'B', 'M', 'A', 'G', 'M', 'B', 'G', 'K', 'B', 'M', 'M',\n",
       "       'M', 'M', 'K', 'F', 'A', 'A', 'O', 'O', 'F', 'A', 'K', 'K', 'B',\n",
       "       'F', 'K', 'K', 'M', 'M', 'A', 'B', 'M', 'O', 'F', 'M', 'M', 'A',\n",
       "       'O', 'A', 'M', 'F', 'O', 'B', 'B', 'A', 'O', 'O', 'M', 'A', 'G',\n",
       "       'O', 'O', 'K', 'M', 'M', 'O', 'B', 'O', 'G', 'K', 'M', 'M', 'B',\n",
       "       'G', 'O', 'K', 'A', 'A', 'O', 'K', 'M', 'F', 'B', 'K', 'O', 'F',\n",
       "       'M', 'O', 'G', 'G', 'G', 'M', 'M', 'F', 'O', 'A', 'M', 'G', 'B',\n",
       "       'M', 'G', 'F', 'O', 'A', 'F', 'M', 'K', 'B', 'A', 'O', 'B', 'B',\n",
       "       'G', 'F', 'M', 'K', 'K', 'B', 'M', 'A', 'F', 'G', 'F'], dtype='<U1')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "3e89f757-34ac-4b84-8fcf-685978d11522",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1a75dc49bb0>]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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MUIQBEEQREQhMUIQBEEQREQhMUIQBEEQRETp0WLkhRdeQHFxMUwmE0pLS7Fq1apID6lDzJ8/HxzHufzl5uY6tsuyjPnz5yM/Px9xcXE444wzsGPHDpdzmM1m3HHHHcjMzERCQgJ+97vf4fDhw+GeildWrlyJCy64APn5+eA4Dp9++qnL9lDNsa6uDtdccw1SUlKQkpKCa665BvX19V08O238zfm6667zeN/HjBnjsk8szXnBggU49dRTkZSUhOzsbFx00UXYs2ePyz7d7X0OZM7d7X1+8cUXcdJJJzkKeI0dOxZfffWVY3t3e48B/3Pubu9xh5B7KO+//76s1+vlV199Vd65c6d85513ygkJCfKhQ4ciPbSgefjhh+Vhw4bJlZWVjr/q6mrH9ieeeEJOSkqSlyxZIv/666/yjBkz5Ly8PLmxsdGxz6xZs+SCggJ5+fLl8qZNm+TJkyfLI0aMkG02WySm5MHSpUvlBx98UF6yZIkMQP7kk09ctodqjueee65cUlIir1mzRl6zZo1cUlIin3/++eGapgv+5nzttdfK5557rsv7Xltb67JPLM35nHPOkd944w15+/bt8pYtW+TzzjtP7t27t9zc3OzYp7u9z4HMubu9z59//rn85Zdfynv27JH37NkjP/DAA7Jer5e3b98uy3L3e49l2f+cu9t73BF6rBgZPXq0PGvWLJd1gwcPlu+7774IjajjPPzww/KIESM0t0mSJOfm5spPPPGEY117e7uckpIiv/TSS7Isy3J9fb2s1+vl999/37HPkSNHZJ7n5WXLlnXp2DuC+405VHPcuXOnDED++eefHfusXbtWBiDv3r27i2flG29i5MILL/R6TKzPubq6WgYgr1ixQpblnvE+u89Zlrv/+yzLspyWlia/9tprPeI9VlDmLMs94z32R49001gsFmzcuBFTp051WT916lSsWbMmQqPqHHv37kV+fj6Ki4tx+eWX48CBAwCAsrIyVFVVuczVaDTi9NNPd8x148aNsFqtLvvk5+ejpKQkJl6PUM1x7dq1SElJwWmnnebYZ8yYMUhJSYna1+HHH39EdnY2Bg4ciJtvvhnV1dWObbE+54aGBgBAeno6gJ7xPrvPWaG7vs+iKOL9999HS0sLxo4d2yPeY/c5K3TX9zhQYqJRXqipqamBKIrIyclxWZ+Tk4OqqqoIjarjnHbaaXj77bcxcOBAHDt2DI8//jjGjRuHHTt2OOajNddDhw4BAKqqqmAwGJCWluaxTyy8HqGaY1VVFbKzsz3On52dHZWvw7Rp0/CHP/wBRUVFKCsrw1//+leceeaZ2LhxI4xGY0zPWZZlzJs3DxMmTEBJSQmA7v8+a80Z6J7v86+//oqxY8eivb0diYmJ+OSTTzB06FDHTbM7vsfe5gx0z/c4WHqkGFHgOM5lWZZlj3WxwLRp0xzPhw8fjrFjx6Jfv3546623HEFQHZlrrL0eoZij1v7R+jrMmDHD8bykpASjRo1CUVERvvzyS1x88cVej4uFOd9+++3Ytm0bVq9e7bGtu77P3ubcHd/nQYMGYcuWLaivr8eSJUtw7bXXYsWKFY7t3fE99jbnoUOHdsv3OFh6pJsmMzMTgiB4qMXq6moPRR6LJCQkYPjw4di7d68jq8bXXHNzc2GxWFBXV+d1n2gmVHPMzc3FsWPHPM5//PjxmHgd8vLyUFRUhL179wKI3Tnfcccd+Pzzz/HDDz+gV69ejvXd+X32NmctusP7bDAY0L9/f4waNQoLFizAiBEj8Mwzz3Tr99jbnLXoDu9xsPRIMWIwGFBaWorly5e7rF++fDnGjRsXoVGFDrPZjF27diEvLw/FxcXIzc11mavFYsGKFSsccy0tLYVer3fZp7KyEtu3b4+J1yNUcxw7diwaGhqwfv16xz7r1q1DQ0NDTLwOtbW1qKioQF5eHoDYm7Msy7j99tvx8ccf4/vvv0dxcbHL9u74Pvubsxax/j5rIcsyzGZzt3yPvaHMWYvu+B77JXyxstGFktr7+uuvyzt37pTnzJkjJyQkyAcPHoz00ILmrrvukn/88Uf5wIED8s8//yyff/75clJSkmMuTzzxhJySkiJ//PHH8q+//ipfccUVmqlyvXr1kr/99lt506ZN8plnnhlVqb1NTU3y5s2b5c2bN8sA5IULF8qbN292pGKHao7nnnuufNJJJ8lr166V165dKw8fPjxiqXG+5tzU1CTfdddd8po1a+SysjL5hx9+kMeOHSsXFBTE7Jz/9Kc/ySkpKfKPP/7okuLY2trq2Ke7vc/+5twd3+f7779fXrlypVxWViZv27ZNfuCBB2Se5+VvvvlGluXu9x7Lsu85d8f3uCP0WDEiy7L8/PPPy0VFRbLBYJBPOeUUl3S6WELJw9fr9XJ+fr588cUXyzt27HBslyRJfvjhh+Xc3FzZaDTKkyZNkn/99VeXc7S1tcm33367nJ6eLsfFxcnnn3++XF5eHu6peOWHH36QAXj8XXvttbIsh26OtbW18lVXXSUnJSXJSUlJ8lVXXSXX1dWFaZau+Jpza2urPHXqVDkrK0vW6/Vy79695WuvvdZjPrE0Z625ApDfeOMNxz7d7X32N+fu+D7fcMMNju/drKws+ayzznIIEVnufu+xLPuec3d8jzsCJ8uyHD47DEEQBEEQhCs9MmaEIAiCIIjogcQIQRAEQRARhcQIQRAEQRARhcQIQRAEQRARhcQIQRAEQRARhcQIQRAEQRARhcQIQRAEQRARhcQIQRAEQRARhcQIQRAEQRARhcQIQRAEQRARhcQIQRAEQRARhcQIQRAEQRAR5f8BgAIFZtIFOKQAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.plot(X[0], lw=0.5)\n",
    "plt.plot(X[1], lw=0.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d9ee213-c19d-47c7-a1b9-9ca1a49167cf",
   "metadata": {},
   "source": [
    "# PCA处理   降维（100,150,200）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ad0b7275-f8e5-47a7-a8da-3054a44cae01",
   "metadata": {},
   "outputs": [],
   "source": [
    "#数据标准化处理\n",
    "\n",
    "X_sclalr = StandardScaler().fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "34ffc20e-a3b5-488f-8dc2-572d7d97f4b4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[6.6868120e-01 2.6772216e-01 3.4161795e-02 1.1242719e-02 4.5455359e-03\n",
      " 1.9613041e-03 1.3434556e-03 1.2398561e-03 8.7243668e-04 6.2117097e-04\n",
      " 5.8394624e-04 4.3821952e-04 3.6621257e-04 3.2896383e-04 3.0289605e-04]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGhCAYAAACd/5VtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvDklEQVR4nO3de1xU9b7/8fcIcsmUUuSWgHgNwUzhbAWzdql00GOZeytuT0qplY8sRcyd5CkvldjNtFNQ7My2dSp2R+tYUTaZmeZJEyEtPd1EhwwiaAdeChTW7w8f8nMEjYFZDC5fz8djHg/mO2utz2dZDm+/62YzDMMQAACARbTzdAMAAADuRLgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACW4vFwk5WVpaioKPn5+SkuLk5btmw567K33HKLbDZbg1dMTEwrdgwAANoyj4ab3NxcpaWlacGCBSooKNCwYcOUnJwsh8PR6PIrV65USUlJ/au4uFidO3fW+PHjW7lzAADQVtk8+eDMwYMHa9CgQcrOzq4fi46O1tixY5WZmfm767/55psaN26cioqKFBkZ2aSadXV1+uGHH9SxY0fZbLZm9w4AAFqPYRg6fPiwwsLC1K7duedmvFuppwZqamqUn5+v+fPnO40nJSVp27ZtTdrGqlWrNGLEiHMGm+rqalVXV9e/P3TokPr169e8pgEAgEcVFxerW7du51zGY+GmvLxctbW1Cg4OdhoPDg5WaWnp765fUlKid999V6+88so5l8vMzNTixYsbjBcXF6tTp06uNQ0AADyiqqpK4eHh6tix4+8u67Fwc8qZh4YMw2jS4aIXX3xRl1xyicaOHXvO5TIyMpSenl7//tQfTqdOnQg3AACcZ5qSETwWbgIDA+Xl5dVglqasrKzBbM6ZDMPQCy+8oMmTJ8vHx+ecy/r6+srX17fF/QIAgPODx66W8vHxUVxcnOx2u9O43W5XYmLiOdfdvHmzvv32W02bNs3MFgEAwHnIo4el0tPTNXnyZMXHxyshIUE5OTlyOByaMWOGpJOHlA4dOqQ1a9Y4rbdq1SoNHjxYsbGxnmgbAAC0YR4NNykpKaqoqNCSJUtUUlKi2NhY5eXl1V/9VFJS0uCeN5WVlVq7dq1WrlzpiZYBAEAb59H73HhCVVWVAgICVFlZyQnFAACcJ1z5/e3xxy8AAAC4E+EGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYCuEGAABYikcfv2BF3ee/Y+r2Dywbber2AQA43zFzAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALMXj4SYrK0tRUVHy8/NTXFyctmzZcs7lq6urtWDBAkVGRsrX11c9e/bUCy+80ErdAgCAts7bk8Vzc3OVlpamrKwsDR06VM8995ySk5O1d+9eRURENLrOhAkT9OOPP2rVqlXq1auXysrKdOLEiVbuHAAAtFU2wzAMTxUfPHiwBg0apOzs7Pqx6OhojR07VpmZmQ2Wf++99zRx4kTt379fnTt3blKN6upqVVdX17+vqqpSeHi4Kisr1alTp5bvxBm6z3/H7ds83YFlo03dPgAAbVFVVZUCAgKa9PvbY4elampqlJ+fr6SkJKfxpKQkbdu2rdF11q9fr/j4eD366KO67LLL1KdPH91zzz369ddfz1onMzNTAQEB9a/w8HC37gcAAGhbPHZYqry8XLW1tQoODnYaDw4OVmlpaaPr7N+/X1u3bpWfn5/eeOMNlZeX684779TPP/981vNuMjIylJ6eXv/+1MwNAACwJo+ecyNJNpvN6b1hGA3GTqmrq5PNZtN//dd/KSAgQJK0fPly/fnPf9Yzzzwjf3//Buv4+vrK19fX/Y0DAIA2yWOHpQIDA+Xl5dVglqasrKzBbM4poaGhuuyyy+qDjXTyHB3DMPT999+b2i8AADg/eCzc+Pj4KC4uTna73WncbrcrMTGx0XWGDh2qH374QUeOHKkf+/rrr9WuXTt169bN1H4BAMD5waP3uUlPT9fzzz+vF154Qfv27dOcOXPkcDg0Y8YMSSfPl5kyZUr98pMmTVKXLl106623au/evfr44481b948TZ06tdFDUgAA4MLj0XNuUlJSVFFRoSVLlqikpESxsbHKy8tTZGSkJKmkpEQOh6N++Ysvvlh2u11333234uPj1aVLF02YMEEPPfSQp3YBAAC0MR69z40nuHKdfHNwnxsAANzvvLjPDQAAgBkINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFIINwAAwFI8Hm6ysrIUFRUlPz8/xcXFacuWLWdd9qOPPpLNZmvw+r//+79W7BgAALRlHg03ubm5SktL04IFC1RQUKBhw4YpOTlZDofjnOt99dVXKikpqX/17t27lToGAABtnUfDzfLlyzVt2jRNnz5d0dHRWrFihcLDw5WdnX3O9YKCghQSElL/8vLyaqWOAQBAW+excFNTU6P8/HwlJSU5jSclJWnbtm3nXHfgwIEKDQ3V8OHDtWnTpnMuW11draqqKqcXAACwLo+Fm/LyctXW1io4ONhpPDg4WKWlpY2uExoaqpycHK1du1br1q1T3759NXz4cH388cdnrZOZmamAgID6V3h4uFv3AwAAtC3enm7AZrM5vTcMo8HYKX379lXfvn3r3yckJKi4uFiPP/64rr766kbXycjIUHp6ev37qqoqAg4AABbmsZmbwMBAeXl5NZilKSsrazCbcy5DhgzRN998c9bPfX191alTJ6cXAACwLo+FGx8fH8XFxclutzuN2+12JSYmNnk7BQUFCg0NdXd7AADgPOXRw1Lp6emaPHmy4uPjlZCQoJycHDkcDs2YMUPSyUNKhw4d0po1ayRJK1asUPfu3RUTE6Oamhq9/PLLWrt2rdauXevJ3QAAAG2IR8NNSkqKKioqtGTJEpWUlCg2NlZ5eXmKjIyUJJWUlDjd86ampkb33HOPDh06JH9/f8XExOidd97RqFGjPLULAACgjbEZhmF4uonWVFVVpYCAAFVWVppy/k33+e+4fZunO7BstKnbBwCgLXLl97fHH78AAADgToQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKd7NWem7777TihUrtG/fPtlsNkVHR2v27Nnq2bOnu/sDAABwicszNxs2bFC/fv20Y8cOXXHFFYqNjdX27dsVExMju91uRo8AAABN5vLMzfz58zVnzhwtW7aswfi9996rkSNHuq05AAAAV7k8c7Nv3z5NmzatwfjUqVO1d+9etzQFAADQXC6Hm65du6qwsLDBeGFhoYKCgtzREwAAQLO5fFjqtttu0+233679+/crMTFRNptNW7du1SOPPKK5c+ea0SMAAECTuRxu7r//fnXs2FFPPPGEMjIyJElhYWFatGiRZs2a5fYGAQAAXOFyuLHZbJozZ47mzJmjw4cPS5I6duzo9sYAAACao1n3uTmFUAMAANqaJoWbQYMGaePGjbr00ks1cOBA2Wy2sy67a9cutzUHAADgqiaFmxtvvFG+vr71P58r3AAAAHhSk8LNwoUL639etGiRWb0AAAC0mMv3uenRo4cqKioajP/yyy/q0aOHW5oCAABoLpfDzYEDB1RbW9tgvLq6Wt9//71bmgIAAGiuJl8ttX79+vqfN2zYoICAgPr3tbW12rhxo6KiolxuICsrS4899phKSkoUExOjFStWaNiwYb+73ieffKJrrrlGsbGxjd4xGQAAXJiaHG7Gjh0r6eR9blJTU50+a9++vbp3764nnnjCpeK5ublKS0tTVlaWhg4dqueee07Jycnau3evIiIizrpeZWWlpkyZouHDh+vHH390qSYAALC2Jh+WqqurU11dnSIiIlRWVlb/vq6uTtXV1frqq6/0b//2by4VX758uaZNm6bp06crOjpaK1asUHh4uLKzs8+53h133KFJkyYpISHBpXoAAMD6XD7npqioSIGBgS0uXFNTo/z8fCUlJTmNJyUladu2bWddb/Xq1fruu++cruA6l+rqalVVVTm9AACAdTXrDsVHjx7V5s2b5XA4VFNT4/RZU58vVV5ertraWgUH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3z698MILWrVqle655x5P7QIAAGhjPHrOTUpKiioqKrRkyRKVlJQoNjZWeXl5ioyMlCSVlJQ43fMmKipKeXl5mjNnjp555hmFhYXpqaeeOm8vA/f19dXChQsbHDazcm322fp1PVmbfW5d7LP163q6dnPZjKZcUwUAAHCe8PjjFwAAANyJcAMAACyFcAMAACyFcAMAACyFcAMAACyFcOMBH3/8scaMGaOwsDDZbDa9+eabrVI3MzNT//Iv/6KOHTsqKChIY8eO1VdffdUqtbOzs3XFFVfU3+EyISFB7777bqvUPl1mZqZsNpvS0tJMr7Vo0SLZbDanV0hIiOl1JenQoUO6+eab1aVLF1100UW68sorlZ+fb3rd7t27N9hnm82mmTNnmlr3xIkT+o//+A9FRUXJ399fPXr00JIlS1RXV2dqXenkc27S0tIUGRkpf39/JSYm6rPPPnN7nd/73jAMQ4sWLVJYWJj8/f31xz/+UV9++aXpddetW6frr79egYGBstlsKiwsbHHNptQ+fvy47r33XvXv318dOnRQWFiYpkyZoh9++MHUutLJv9uXX365OnTooEsvvVQjRozQ9u3bW1y3KbVPd8cdd8hms2nFihWm173lllsa/L0eMmRIi+uahXDjAUePHtWAAQP09NNPt2rdzZs3a+bMmfr0009lt9t14sQJJSUl6ejRo6bX7tatm5YtW6adO3dq586duu6663TjjTe65cu3qT777DPl5OToiiuuaLWaMTExKikpqX/t2bPH9Jr//Oc/NXToULVv317vvvuu9u7dqyeeeKJVHjvy2WefOe3vqTuKjx8/3tS6jzzyiJ599lk9/fTT2rdvnx599FE99thj+s///E9T60rS9OnTZbfb9dJLL2nPnj1KSkrSiBEjdOjQIbfW+b3vjUcffVTLly/X008/rc8++0whISEaOXKkDh8+bGrdo0ePaujQoVq2bFmL6rha+9ixY9q1a5fuv/9+7dq1S+vWrdPXX3+tG264wdS6ktSnTx89/fTT2rNnj7Zu3aru3bsrKSlJP/30k+m1T3nzzTe1ffv2Jj1nyV11//Vf/9Xp73deXp5bapvCgEdJMt544w2P1C4rKzMkGZs3b/ZI/UsvvdR4/vnnW6XW4cOHjd69ext2u9245pprjNmzZ5tec+HChcaAAQNMr3Ome++917jqqqtavW5jZs+ebfTs2dOoq6sztc7o0aONqVOnOo2NGzfOuPnmm02te+zYMcPLy8t4++23ncYHDBhgLFiwwLS6Z35v1NXVGSEhIcayZcvqx3777TcjICDAePbZZ02re7qioiJDklFQUOC2ek2tfcqOHTsMScbBgwdbtW5lZaUhyfjggw/cVvdctb///nvjsssuM7744gsjMjLSePLJJ02vm5qaatx4441urWMmZm4uYJWVlZKkzp07t2rd2tpavfbaazp69KgSEhJapebMmTM1evRojRgxolXqnfLNN98oLCxMUVFRmjhxovbv3296zfXr1ys+Pl7jx49XUFCQBg4cqL/97W+m1z1TTU2NXn75ZU2dOlU2m83UWldddZU2btyor7/+WpL0+eefa+vWrRo1apSpdU+cOKHa2lr5+fk5jfv7+2vr1q2m1j5dUVGRSktLlZSUVD/m6+ura665Rtu2bWu1PjytsrJSNputVR+OXFNTo5ycHAUEBGjAgAGm16urq9PkyZM1b948xcTEmF7vdB999JGCgoLUp08f3XbbbSorK2vV+q7w6OMX4DmGYSg9PV1XXXWVYmNjW6Xmnj17lJCQoN9++00XX3yx3njjDfXr18/0uq+99pp27dplynkQ5zJ48GCtWbNGffr00Y8//qiHHnpIiYmJ+vLLL8/6FHt32L9/v7Kzs5Wenq777rtPO3bs0KxZs+Tr6+v0rDazvfnmm/rll190yy23mF7r3nvvVWVlpS6//HJ5eXmptrZWDz/8sP7yl7+YWrdjx45KSEjQgw8+qOjoaAUHB+vVV1/V9u3b1bt3b1Nrn660tFSSFBwc7DQeHBysgwcPtlofnvTbb79p/vz5mjRpUqs8ufrtt9/WxIkTdezYMYWGhsputyswMND0uo888oi8vb01a9Ys02udLjk5WePHj1dkZKSKiop0//3367rrrlN+fn6bfCwD4eYCddddd2n37t2t+q/Lvn37qrCwUL/88ovWrl2r1NRUbd682dSAU1xcrNmzZ+v9999v8K9rsyUnJ9f/3L9/fyUkJKhnz576+9//rvT0dNPq1tXVKT4+XkuXLpUkDRw4UF9++aWys7NbNdysWrVKycnJbjsn4Fxyc3P18ssv65VXXlFMTIwKCwuVlpamsLAwpaammlr7pZde0tSpU3XZZZfJy8tLgwYN0qRJk7Rr1y5T6zbmzBkywzBMnzVrC44fP66JEyeqrq5OWVlZrVLz2muvVWFhocrLy/W3v/1NEyZM0Pbt2xUUFGRazfz8fK1cuVK7du1q9f+uKSkp9T/HxsYqPj5ekZGReueddzRu3LhW7aUpOCx1Abr77ru1fv16bdq0Sd26dWu1uj4+PurVq5fi4+OVmZmpAQMGaOXKlabWzM/PV1lZmeLi4uTt7S1vb29t3rxZTz31lLy9vVVbW2tq/dN16NBB/fv31zfffGNqndDQ0AaBMTo62ukhtGY7ePCgPvjgA02fPr1V6s2bN0/z58/XxIkT1b9/f02ePFlz5sxRZmam6bV79uypzZs368iRIyouLtaOHTt0/PhxRUVFmV77lFNX4Z2awTmlrKyswWyO1Rw/flwTJkxQUVGR7HZ7q8zaSCf/Pvfq1UtDhgzRqlWr5O3trVWrVplac8uWLSorK1NERET999nBgwc1d+5cde/e3dTaZwoNDVVkZKTp32fNRbi5gBiGobvuukvr1q3Thx9+2Kpfvmfrp7q62tQaw4cP1549e1RYWFj/io+P17//+7+rsLBQXl5eptY/XXV1tfbt26fQ0FBT6wwdOrTBJf5ff/21IiMjTa17utWrVysoKEijR49ulXrHjh1Tu3bOX2deXl6tcin4KR06dFBoaKj++c9/asOGDbrxxhtbrXZUVJRCQkLqr06TTp4LsnnzZiUmJrZaH63tVLD55ptv9MEHH5h6uPf3tMb32eTJk7V7926n77OwsDDNmzdPGzZsMLX2mSoqKlRcXGz691lzcVjKA44cOaJvv/22/n1RUZEKCwvVuXNnRUREmFZ35syZeuWVV/Q///M/6tixY/2/8gICAuTv729aXUm67777lJycrPDwcB0+fFivvfaaPvroI7333num1u3YsWODc4o6dOigLl26mH6u0T333KMxY8YoIiJCZWVleuihh1RVVWX6YZI5c+YoMTFRS5cu1YQJE7Rjxw7l5OQoJyfH1Lqn1NXVafXq1UpNTZW3d+t8xYwZM0YPP/ywIiIiFBMTo4KCAi1fvlxTp041vfaGDRtkGIb69u2rb7/9VvPmzVPfvn116623urXO731vpKWlaenSperdu7d69+6tpUuX6qKLLtKkSZNMrfvzzz/L4XDU31/mVLAOCQlp8X2dzlU7LCxMf/7zn7Vr1y69/fbbqq2trf9O69y5s3x8fEyp26VLFz388MO64YYbFBoaqoqKCmVlZen77793yy0Pfu/P+8wA1759e4WEhKhv376m1e3cubMWLVqkP/3pTwoNDdWBAwd03333KTAwUDfddFOL6prGk5dqXag2bdpkSGrwSk1NNbVuYzUlGatXrza1rmEYxtSpU43IyEjDx8fH6Nq1qzF8+HDj/fffN71uY1rrUvCUlBQjNDTUaN++vREWFmaMGzfO+PLLL02vaxiG8dZbbxmxsbGGr6+vcfnllxs5OTmtUtcwDGPDhg2GJOOrr75qtZpVVVXG7NmzjYiICMPPz8/o0aOHsWDBAqO6utr02rm5uUaPHj0MHx8fIyQkxJg5c6bxyy+/uL3O731v1NXVGQsXLjRCQkIMX19f4+qrrzb27Nljet3Vq1c3+vnChQtNrX3q0vPGXps2bTKt7q+//mrcdNNNRlhYmOHj42OEhoYaN9xwg7Fjx44W7+/v1W6Muy4FP1fdY8eOGUlJSUbXrl2N9u3bGxEREUZqaqrhcDhaXNcsNsMwDLemJQAAAA/inBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAp/w9o0r1tXuixSAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA \n",
    "pca = PCA(n_components=15)                 #   取15维\n",
    "X_pca = pca.fit_transform(X_sclalr)\n",
    "\n",
    "var_ratio = pca.explained_variance_ratio_#计算比例\n",
    "print(var_ratio)\n",
    "\n",
    "\n",
    "#主成分\n",
    "fig2 = plt.figure()\n",
    "plt.bar(list(range(1, 16)),var_ratio)\n",
    "plt.xticks(list(range(1, 16)),list(range(1, 16)))\n",
    "plt.ylabel(\"variance ratio \")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "ab71f851-c24e-4e43-9af6-5bce4a194cb7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.9438305e+01, -4.5355419e+01,  6.7121792e+00, ...,\n",
       "         9.1340151e+00, -3.7556674e+00,  1.0021889e+01],\n",
       "       [ 4.2273438e+01,  1.7391438e+01, -1.0965673e+01, ...,\n",
       "        -1.1658671e+00,  9.0141690e-01,  5.7120997e-01],\n",
       "       [ 3.7648281e+01,  1.0648122e+01, -1.1265481e+01, ...,\n",
       "        -2.6216841e+00, -1.0419118e+00,  2.0297649e+00],\n",
       "       ...,\n",
       "       [ 1.0063465e+02,  8.2506653e+01, -2.5818659e+01, ...,\n",
       "         1.3717826e-01,  7.7282391e-03, -5.0043589e-01],\n",
       "       [-1.6990286e+01, -2.5872152e+01, -1.4675539e+01, ...,\n",
       "        -8.9780575e-01,  5.0968099e-01,  1.2032025e+00],\n",
       "       [ 2.0522552e+00, -4.7189629e+01, -1.4460505e+01, ...,\n",
       "        -1.5987132e+00,  6.6144907e-01, -3.3003679e-01]], dtype=float32)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_pca"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "796bab1d-226f-4bf6-af45-3d5a49a763ea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['B', 'F', 'F', 'A', 'G', 'K', 'O', 'B', 'M', 'O', 'G', 'M', 'F',\n",
       "       'K', 'G', 'F', 'F', 'O', 'B', 'G', 'F', 'G', 'B', 'O', 'A', 'K',\n",
       "       'M', 'A', 'F', 'F', 'F', 'G', 'F', 'A', 'K', 'G', 'A', 'G', 'K',\n",
       "       'K', 'K', 'A', 'K', 'G', 'G', 'F', 'A', 'M', 'B', 'F', 'K', 'B',\n",
       "       'G', 'F', 'F', 'O', 'O', 'M', 'F', 'A', 'O', 'G', 'O', 'O', 'K',\n",
       "       'F', 'G', 'A', 'A', 'B', 'G', 'F', 'G', 'F', 'M', 'K', 'A', 'B',\n",
       "       'B', 'G', 'K', 'K', 'M', 'M', 'A', 'G', 'K', 'M', 'B', 'K', 'G',\n",
       "       'G', 'B', 'O', 'B', 'B', 'O', 'F', 'G', 'B', 'O', 'K', 'O', 'G',\n",
       "       'K', 'B', 'O', 'G', 'A', 'K', 'M', 'F', 'A', 'F', 'F', 'A', 'M',\n",
       "       'B', 'A', 'O', 'O', 'F', 'K', 'A', 'O', 'K', 'M', 'A', 'M', 'G',\n",
       "       'O', 'K', 'A', 'M', 'K', 'O', 'F', 'B', 'F', 'B', 'M', 'O', 'O',\n",
       "       'K', 'O', 'M', 'K', 'A', 'M', 'O', 'G', 'O', 'B', 'O', 'A', 'K',\n",
       "       'G', 'B', 'K', 'F', 'A', 'M', 'B', 'M', 'G', 'G', 'O', 'F', 'O',\n",
       "       'B', 'O', 'K', 'M', 'A', 'O', 'F', 'M', 'A', 'G', 'O', 'A', 'K',\n",
       "       'F', 'M', 'O', 'F', 'F', 'F', 'K', 'G', 'O', 'O', 'O', 'F', 'K',\n",
       "       'B', 'F', 'G', 'M', 'F', 'M', 'B', 'A', 'A', 'G', 'F', 'M', 'B',\n",
       "       'B', 'A', 'G', 'K', 'O', 'F', 'M', 'O', 'G', 'O', 'A', 'F', 'M',\n",
       "       'M', 'O', 'B', 'B', 'B', 'A', 'A', 'K', 'K', 'B', 'F', 'F', 'F',\n",
       "       'F', 'G', 'M', 'B', 'O', 'M', 'M', 'G', 'G', 'F', 'A', 'K', 'G',\n",
       "       'B', 'A', 'O', 'O', 'G', 'A', 'F', 'B', 'M', 'A', 'B', 'G', 'F',\n",
       "       'A', 'G', 'K', 'G', 'A', 'A', 'M', 'B', 'A', 'K', 'K', 'B', 'K',\n",
       "       'O', 'A', 'F', 'A', 'M', 'O', 'A', 'G', 'M', 'G', 'F', 'M', 'K',\n",
       "       'B', 'F', 'K', 'B', 'G', 'A', 'A', 'F', 'A', 'B', 'A', 'G', 'G',\n",
       "       'A', 'A', 'A', 'O', 'F', 'M', 'B', 'F', 'F', 'M', 'M', 'G', 'K',\n",
       "       'K', 'F', 'B', 'A', 'G', 'B', 'B', 'M', 'A', 'K', 'B', 'M', 'G',\n",
       "       'K', 'B', 'O', 'A', 'F', 'F', 'M', 'F', 'G', 'G', 'K', 'G', 'M',\n",
       "       'M', 'K', 'G', 'A', 'F', 'K', 'B', 'B', 'G', 'G', 'G', 'B', 'A',\n",
       "       'M', 'M', 'F', 'O', 'K', 'A', 'G', 'K', 'K', 'B', 'M', 'B', 'M',\n",
       "       'A', 'F', 'G', 'F', 'B', 'K', 'B', 'K', 'O', 'F', 'O', 'G', 'A',\n",
       "       'A', 'K', 'K', 'B', 'B', 'K', 'O', 'G', 'O', 'M', 'A', 'F', 'O',\n",
       "       'A', 'K', 'M', 'M', 'A', 'G', 'F', 'A', 'G', 'M', 'K', 'B', 'O',\n",
       "       'A', 'B', 'K', 'O', 'B', 'K', 'G', 'F', 'F', 'F', 'G', 'M', 'G',\n",
       "       'F', 'O', 'B', 'O', 'K', 'K', 'G', 'O', 'A', 'K', 'O', 'G', 'G',\n",
       "       'G', 'M', 'K', 'M', 'B', 'G', 'F', 'K', 'K', 'M', 'B', 'O', 'B',\n",
       "       'A', 'O', 'F', 'F', 'A', 'G', 'O', 'O', 'B', 'O', 'K', 'A', 'F',\n",
       "       'O', 'F', 'F', 'A', 'K', 'F', 'K', 'G', 'B', 'F', 'O', 'B', 'G',\n",
       "       'F', 'G', 'O', 'G', 'G', 'M', 'F', 'A', 'O', 'M', 'B', 'G', 'M',\n",
       "       'B', 'M', 'F', 'B', 'A', 'A', 'F', 'K', 'K', 'K', 'A', 'B', 'K',\n",
       "       'F', 'F', 'B', 'O', 'B', 'K', 'M', 'K', 'K', 'K', 'O', 'M', 'O',\n",
       "       'B', 'A', 'B', 'A', 'B', 'G', 'B', 'M', 'M', 'G', 'K', 'F', 'G',\n",
       "       'O', 'F', 'K', 'A', 'B', 'G', 'B', 'O', 'F', 'G', 'O', 'K', 'K',\n",
       "       'O', 'K', 'F', 'B', 'F', 'M', 'K', 'M', 'A', 'G', 'A', 'O', 'B',\n",
       "       'B', 'B', 'A', 'F', 'K', 'O', 'B', 'A', 'A', 'M', 'M', 'A', 'B',\n",
       "       'G', 'B', 'M', 'O', 'K', 'K', 'O', 'A', 'G', 'M', 'G', 'O', 'B',\n",
       "       'M', 'M', 'O', 'G', 'A', 'M', 'O', 'B', 'K', 'M', 'O', 'O', 'G',\n",
       "       'A', 'A', 'B', 'M', 'A', 'G', 'M', 'B', 'G', 'K', 'B', 'M', 'M',\n",
       "       'M', 'M', 'K', 'F', 'A', 'A', 'O', 'O', 'F', 'A', 'K', 'K', 'B',\n",
       "       'F', 'K', 'K', 'M', 'M', 'A', 'B', 'M', 'O', 'F', 'M', 'M', 'A',\n",
       "       'O', 'A', 'M', 'F', 'O', 'B', 'B', 'A', 'O', 'O', 'M', 'A', 'G',\n",
       "       'O', 'O', 'K', 'M', 'M', 'O', 'B', 'O', 'G', 'K', 'M', 'M', 'B',\n",
       "       'G', 'O', 'K', 'A', 'A', 'O', 'K', 'M', 'F', 'B', 'K', 'O', 'F',\n",
       "       'M', 'O', 'G', 'G', 'G', 'M', 'M', 'F', 'O', 'A', 'M', 'G', 'B',\n",
       "       'M', 'G', 'F', 'O', 'A', 'F', 'M', 'K', 'B', 'A', 'O', 'B', 'B',\n",
       "       'G', 'F', 'M', 'K', 'K', 'B', 'M', 'A', 'F', 'G', 'F'], dtype='<U1')"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "c23d6e49-a8ea-4427-8884-8b4535eb846f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAisAAAGdCAYAAADT1TPdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAADxmUlEQVR4nOydeXwTZf7HP5OkV9qmd5MWoZRSoKUFQQpKUamUggf8XFbcVVEUr1V3V2RdQXRVdl0ulcXFXVdZXWFZ14P1AMVyKQpWW7QglCJHKQVLeh9pm17JzO+PdNIcM5OZJJOk7fN+vXhpJs/MPGmbeb7P9/h8KYZhGBAIBAKBQCAEKAp/T4BAIBAIBAJBCGKsEAgEAoFACGiIsUIgEAgEAiGgIcYKgUAgEAiEgIYYKwQCgUAgEAIaYqwQCAQCgUAIaIixQiAQCAQCIaAhxgqBQCAQCISARuXvCXgKTdO4dOkSIiMjQVGUv6dDIBAIBAJBBAzDoK2tDcnJyVAohH0nA95YuXTpEoYPH+7vaRAIBAKBQHCDixcv4rLLLhMcM+CNlcjISACWD6vRaPw8GwKBQCAQCGIwGAwYPny4dR0XYsAbK2zoR6PREGOFQCAQCIQBhpgUDpJgSyAQCAQCIaAhxgqBQCAQCISAhhgrBAKBQCAQApoBn7MiBoZhYDKZYDab/T0Vn6NUKqFSqUhZN4FAIBAGLIPeWOnp6YFer4fRaPT3VPyGWq1GUlISgoOD/T0VAoFAIBAkM6iNFZqmUVlZCaVSieTkZAQHBw8pDwPDMOjp6UF9fT0qKyuRnp7uUniHQCAQCIRAY1AbKz09PaBpGsOHD4darfb3dPxCWFgYgoKCUFVVhZ6eHoSGhvp7SgQCgUAgSGJIbLOHujdhqH9+AoFAIAxsBrVnhUAgEAgEggfQZqCqCGivBSK0QMp0QKH0+TSIsUIgEAgEAsGZ8h1A4XLAcKn/mCYZmLsOyJzv06kQY4VAIBAIhCEOTTPQn2lBh6Eb4ZoQJHV/CcUHi50HGvTAe3cBt271qcFCjJUBxokTJ/DMM8/g+++/R1VVFf7yl79g6dKl/p4WgUAgEAYYDM2gu7IV+uMNOPZtDX5q6bG+F67owdWaK5EW+q3jWQAooHAFMO5Gn4WESOalCMw0g28qGvHx0Wp8U9EIM834bS5GoxGjRo3C2rVrodPp/DYPAoFAIAxcOssaULOuBA2bjyPoWz2uAIMCjQpJQRZ5jw46FoUtT6Ci60qOsxnAUG3JZfERxLPigsIyPVbtLIe+tct6LCkqFM/Oy8TcrCTZ7rt9+3asWrUKZ8+ehVqtxqRJk/Dxxx8jJycHOTk5AIAVK1bIdn8CgUAgDE46yxrQuO2k0/FQCshRK3HYaIa+VwGAxiHDEqSGlEBB0c4Xaq+Vf7J9EM+KAIVlejy0rdTOUAGAmtYuPLStFIVlelnuq9frcdttt2HJkiU4efIkDhw4gAULFoBh/OfRIRBsMdNmHK45jF3nduFwzWGY6aHXyoJAGIgwNIOWnRWc77GiqVlhbGhHgXY6AfqeDO6LRWhlmCE3xLPCg5lmsGpnObjMg76IHVbtLMfsTB2UCu+q4ur1ephMJixYsAApKSkAgOzsbK/eg0Bwl31V+7C2ZC1qjf27Kq1aixVTVyA/Jd+PMyMQCK7ormyFubWH932KoqCmgDgVhUaTZQXsoGOcB2qGWcqYfQTxrPBQUtnk5FGxhQGgb+1CSWWT1+89ceJEzJo1C9nZ2Vi4cCE2b96M5uZmr9+HQJDKvqp9WHZgmZ2hAgB1xjosO7AM+6r2+WlmBAJBDHQbv6FiS6jNHjxcwbH+zF3rU70VWY0Vk8mEp59+GqmpqQgLC8OoUaPwxz/+ETTdH/tiGAbPPfcckpOTERYWhpkzZ+LEiRNyTksUdW38hoo746SgVCqxd+9efPbZZ8jMzMSmTZswduxYVFZWev1eBIJYzLQZa0vWguHwN7LH1pWsIyEhAiGAUUSKa2jbxQAAjQhFPZKCbfJbKCVwyxaf66zIaqysW7cO//jHP/DKK6/g5MmTWL9+PV544QVs2rTJOmb9+vXYsGEDXnnlFRw+fBg6nQ6zZ89GW1ubnFNzSWKkuB46YsdJhaIo5ObmYtWqVThy5AiCg4Px4YcfynIvAkEMpXWlTh4VWxgwqDHWoLSu1IezIhAIUlClRMAcAc5NB2BxIBhpBo0mMwAKMzRv2ifX3vImkHWzT+Zqi6w5K9988w3+7//+DzfeeCMAYOTIkfjvf/+L7777DoDlh7Jx40Y89dRTWLBgAQBgy5Yt0Gq1ePvtt/Hggw/KOT1BpqbGIikqFDWtXZy/UgqALioUU1NjvX7v4uJi7N+/HwUFBUhMTERxcTHq6+uRkZGBnp4elJeXA7A0aqyursbRo0cRERGB0aNHe30uBAJLvbHeq+MIBIJvYfPN0qKS8HT7/aDBQIH+eA9bxFHWaUaEqgUzIjb366xohllCPz72qLDIaqzMmDED//jHP3D69GmMGTMGP/zwAw4dOoSNGzcCACorK1FTU4OCggLrOSEhIbj22mtRVFTkV2NFqaDw7LxMPLStFBRgZ7Cwv9pn52V6PbkWADQaDb766its3LgRBoMBKSkpeOmll3D99dfj/PnzmDRpknXsiy++iBdffBHXXnstDhw44PW5EAgsCeoEr44jEAi+g803Y8CgVlOL57EZv6pdiARTf/IsFRGM7ux4TMuIQ1JaJBQXtX7vCcQiq7GyfPlytLa2Yty4cVAqlTCbzfjzn/+M2267DQBQU1MDANBq7cuftFotqqqqOK/Z3d2N7u5u62uDwSDT7IG5WUl4ddFkJ50Vncw6KxkZGSgsLOR8b+TIkaSEmeAXJidOhlatRZ2xjtOFTIGCVq3F5MTJfpgdgUDggyvfrEhzFN9G/oDxxtGIM0WBiVBi413/gEplYxakXu2H2XIjq7Hy7rvvYtu2bXj77bcxfvx4HD16FEuXLkVycjIWL+7vOcDWdrMwDON0jGXNmjVYtWqVnNO2Y25WEmZn6lBS2YS6ti4kRlpCP3J4VAiEQEapUGLF1BVYdmAZKFB2Dz6qz9+4fOpyKP24+yIQCM7w5ZvRFIPj4Wesr480HEGOLseXUxONrAm2v//977FixQr88pe/RHZ2Nu6880489thjWLNmDQBY5eJZDwtLXV2dk7eF5cknn0Rra6v138WLF+X8CAAsIaGr0uLwf5cPw1VpccRQIQxZ8lPysWHmBiSqE+2Oa9VabJi5geisEAgByGDIN5PVs2I0GqFQ2NtDSqXSWrqcmpoKnU6HvXv3WvMwenp68OWXX2LdunWc1wwJCUFISIic0yYQCALkp+Qjb3geSutKUW+sR4I6AZMTJxOPCoHgQ5y6JKdHQ8GzkR4M+WayGivz5s3Dn//8Z4wYMQLjx4/HkSNHsGHDBixZsgSAJfyzdOlSrF69Gunp6UhPT8fq1auhVqtx++23yzk1AoHgAUqFMmDdxQTCYKfiSB0OvnsGHS39+Zvh0SG4+hfpSJuU6DR+MOSbyWqsbNq0CX/4wx/w8MMPo66uDsnJyXjwwQfxzDPPWMc88cQT6OzsxMMPP4zm5mZMmzYNe/bsQWRkpJxTIxAIBAJhwFFxpA6Fr5U5He9o6Ubha2WY+2CWk8EyGPLNKGaAl5YYDAZERUWhtbUVGo3G7r2uri5UVlYiNTUVoaHyiLcNBMjPgUAgEAYuZtqM0rpS1LXX49LrYegx8C/bwRoKyQ90IjHCOTzL1ddLp9Zh+dTlfsk3E1q/HSGNDAkEAoFACFBsDYzk1tGYb/iN4PgeA4O/7tqMS1FnnRqMDuR8M2KsEAgEAmFIwHooBspCbSvkBgDqXmHvAws7jm0walupN1DzzYixQiAMAQbaQ5pA8DZcIRBHz4MvcfWd5BJyMwaJE0FlxzFgQIHCupJ1yBueN6C/88RYGWBs3rwZW7duRVmZJcHqiiuuwOrVqzF16lQ/z4wQqATaQ5pAkAOhxd/RQ8HC5XnwBWK+k1xCbnpNBdqDmxHeE21NjLWFAYP24BboNRV2x9gGowPRo8IiqyjcoIE2A5UHgePbLf+lzX6byoEDB3Dbbbfhiy++wDfffIMRI0agoKAA1dXVfpsTIXBhH9KODz32Ib2vap+fZkYgeI99Vfsw539zsGT3Eiw/uBxLdi/BnP/Nwb6qfZweChb22LqSdTD76Lku9jvJJdDGUAy+HvmB5f8dPg/7umjkB2Ao588ayIJvYiDGiivKdwAbs4AtNwH/u9fy341ZluMysn37dmRnZyMsLAxxcXHIz89HR0cH/vOf/+Dhhx/G5ZdfjnHjxmHz5s2gaRr79++XdT6EgUegPaQJBDlwtfhvPr6ZU2qexdbzIDdSvpN8Am2VccewZ8yb6AhusZzH0DD3XkSHuRTFutdxPvYY53mBLPgmBhIGEqJ8B/DeXYDjH5ZBbzl+61ZZ2mXr9XrcdtttWL9+PX72s5+hra0NBw8e5GxgaDQa0dvbi9jYWK/PgzCw4esHwjJY3MOEoYurxZ8ChW0nt4m6li88D1K+k0JCbpVxx1AVW4bpP2Uhq1KB3vZmqABcbgDSK4ehOLMJF3SdAOwF32jajOqTJ9De0oyI6BgMyxgPxQDJYyHGCh+0GShcDidDBeg7RgGFK4BxN3q9bbZer4fJZMKCBQuQkpICAMjOzuYcu2LFCgwbNgz5+ST3gGDPYOgHQiAIIWbxb+1uFXUtX3gepHwnXQm5Da8NxejjrehyOFfdpUReaQK+mFyPizrLu8unLse5w8X4/K3X0d7UYB0bERuP6+5+AOnTpnv82eSGhIH4qCoCDJcEBjCAodoyzstMnDgRs2bNQnZ2NhYuXIjNmzejubnZadz69evx3//+Fx988AEReyM4MRj6gRAIQohd/DXBGs6EVMCy8OvUOp9IzUv9TvI2Dg3ToqAilfNc9nNOLY+FNszSYDSlRo0dG1bbGSoA0N7UgB0bVuNMsffXMW9DjBU+2vmtdbfGSUCpVGLv3r347LPPkJmZiU2bNmHs2LGorKy0jnnxxRexevVq7NmzBxMmTPD6HAgDH9aNHAgPaQJBDsQu/ndm3AkATt8FX0vNu/OdzE/Jx+6f78abc97EuqvX4c05b2Jz5gvobW3nvQ8FChFdKmzOfAHXDc/D52+9LjivL7a8DjrAc9eIscJHhNa74yRCURRyc3OxatUqHDlyBMHBwfjwww8BAC+88AL+9Kc/obCwEFOmTJHl/oSBD+tGBvz/kCYQ5EDs4n//hPu5PRRqrU/Llt39TrJCbjeMugE5uhx0tooLbXW2tlpyVBw8Ko60NTag+uQJsR/DL5CcFT5SpgOaZEsyLWfeCmV5P8X7sb7i4mLs378fBQUFSExMRHFxMerr65GRkYH169fjD3/4A95++22MHDkSNTU1AICIiAhERER4fS6EgQ3rRubSdPBXPxACwVtIadAXKFLz3vhORkTHiLpXRHQM2lucUwi4EDvOXxBjhQ+FEpi7rq8aiIK9wdJnEc9d6/XkWgDQaDT46quvsHHjRhgMBqSkpOCll17C9ddfj4ceegg9PT245ZZb7M559tln8dxzz3l9LoSBT6A8pAkEOZCy+AeK1Lyn38lhGeMRERsv6DGJjIvHsIzxoj0mYg0gf0GMFSEy51vKkwuX2yfbapIthooMZcsAkJGRgcLCQs73zp8/L8s9CYObQHlIEwhyMBANck++kwqFEtfd/QB2bFjNOyZv8QNQKJSSDJtAhhgrrsicbylPriqyJNNGaC2hnwD+EhAIBMJQY6gZ5OnTpmP+spVO5ciRcfHIW9xfjizFsAlkiLEiBoUSSL3a37MgEAgEAsFK+rTpSMuZ5lLoTaxhE8gQY4VAIBAIhAGKQqHE8PGu5SvEGjaBCjFWCAQCgUAYAog1bAIRorNCIBAIBAIhoCHGCoFAIBAIhICGhIEIBC9hps0DqnSSQCAQBgrEWCEQvMC+qn2colQrpq4gKrGEgIWhGXRXtoJu64EiMhghqVGgFNzS9QSCPyHGCoHgIfuq9mHZgWV2Ut8AUGesw7IDy5x6j5AFghAIdJY1oGVnBcytPdZjyqhgRM9LQ1hWvB9nRuCENg9pvS9irBCGDHIYCWbajLUla50MFQBgwIAChXUl65A3PA9KhVJwgQjOjCFhJIJP6CxrQOO2k07Hza09aNx2EnGLMojBEkiU7+BRUl8nm5J6oEGMlQHGBx98gNWrV+Ps2bPo7e1Feno6fve73+HOO+/099QCGrl2kaV1pXahH0cYMKgx1qC0rhRZDam8C0TDtnK8Muo97Ar50nqchJEIcsDQDFp2VgiOadl5DqGZccTjFwiU7+jrUeewITLoLcdv3TokDBZSDSQCM23G4ZrD2HVuFw7XHIaZNvttLrGxsXjqqafwzTff4NixY7jnnntwzz33YPfu3X6bU6DD7iJtDRWgfxfZWSbcPl2IemO9uHHt9YILBANg0fnrkdc6Bdkd6VAwlDWMtK9qn9vzIxAc6a5sdfouOGJu7UZ3ZauPZkTghTZbPCocnlvrscIVlnGDHOJZcYG/Eie3b9+OVatW4ezZs1Cr1Zg0aRI+/vhjzJw5027co48+ii1btuDQoUOYM2eObPMZqMi9i0xQJ4gaN6w5VnCBUIBCDK3BE5eWAADqVc34h/Z9fKP5wS6MRCB4Ct0mbKhIHUeQkaoi+9CPEwxgqLaMG+QtYYhnRQA2cdLRzS/3jlev1+O2227DkiVLcPLkSRw4cAALFiwAw9hb1wzDYP/+/Th16hSuueYaWeYy0JF7Fzk5cTK0ai0ocBs6FCjo1DqkqUZKum6cKRpPV9+PqwwTrWEkAsEbKCKDvTqOICPt/CFmt8YNYIixwoOrxEkAWFeyTpaQkF6vh8lkwoIFCzBy5EhkZ2fj4YcfRkREBACgtbUVERERCA4Oxo033ohNmzZh9uzZXp/HYEDuXaRSocSKqSsAwMlgYV8vn7ocKk2opOsqQIEB8GDtLVAwlOhwE4HgipDUKCijhA0RZVQIQlKjfDQjAi8RWu+OG8AQY4UHKYmT3mbixImYNWsWsrOzsXDhQmzevBnNzc3W9yMjI3H06FEcPnwYf/7zn7Fs2TIcOHDA6/MYDPhiF5mfko8NMzcgUZ1od1yr1lrLlsUsEE5zAoVEUyzGG0eLDjcRCK6gFBSi56UJjomeN4ok1wYCKdMtVT88nluAAjTDLOMGOSRnhQfRiZMy7HiVSiX27t2LoqIi7NmzB5s2bcJTTz2F4uJipKamQqFQYPTo0QCAyy+/HCdPnsSaNWuc8lkI/btIoVCQN3aR+Sn5yBueZ1d6PCl+EkxV7TAerYMiMhhRN45C09s/Sr72KOUITE6c7NH8CARbwrLiEbcog6NCLgTR80aRsuVAQaG0lCe/dxcsBoutp7/PgJm7dkjorRBjhQexO1m5drwURSE3Nxe5ubl45plnkJKSgg8//BDLli1zGsswDLq7u2WZx0CH3UVylQyzeGsXqVQokaPLAWCpQKr/1/d2C4FCrQIVrADTQ0u67g3Z80hyLcHrhGXFIzQzjggUBjqZ8y3lyZw6K2uHRNkyQIwVXtjEyTpjHWfeCgUKWrVWlh1vcXEx9u/fj4KCAiQmJqK4uBj19fXIyMjAmjVrMGXKFKSlpaGnpwe7du3C1q1b8eqrr3p9HoMFX+8i+QS3aKNJ0nVoMDBHAFddeZ23pkYg2EEpKISmRft7GgRXZM4Hxt1IFGwJzrCJk8sOLAMFys5gsU2clGPHq9Fo8NVXX2Hjxo0wGAxISUnBSy+9hOuvvx5ff/01Hn74Yfz0008ICwvDuHHjsG3bNvziF7/w+jwGE77aRYoplRZ1HVhyVhJuziA7XQKBYDFMBnl5shAU41gPO8AwGAyIiopCa2srNBqN3XtdXV2orKxEamoqQkOlVWOwcOms6NQ6LJ+6fMAoi3rj50AQR1dFCxo2H/f4Oo1Brei8To0r84hXhUAgDE6E1m9HiGfFBVyJk6Rny+DB2/2CPBHSejtuF34KqYHGFAmDsh2NJ1vRPpJGfurAMIoJBAJBLoixIgLbxEnC4MGb/YJYo6e31uj2fEyUGffU/QwJphjrsaY3W9G+sA4RExIFzhSHmTYPSqObdLEmEAY/xFghDEm82XWWy+iRAg0GbcoO3Nlwk9N70b0aNL99CkqFwqNEYDacWd9Rh/HG0Yg1RWFLhAI35902oD03cjWoJBA8gjYP6WRYOZBdFK66uhqLFi1CXFwc1Go1Lr/8cnz//ffW9xmGwXPPPYfk5GSEhYVh5syZOHHihNzTIgxhxCTBNn94FrTJvsSYoRl0VbTAeLQOXRUtYGiGt0miWGgwlnTtvswxRxVcRZ+2QsvOc2Bo99LL2LYRaTVJeOvs81h/4TGsuLQEK07fjbg3jPj2i8/duq6/kbNBJYHgNuU7gI1ZwJabgP/da/nvxizLcYLbyOpZaW5uRm5uLvLy8vDZZ58hMTERFRUViI6Oto5Zv349NmzYgLfeegtjxozB888/j9mzZ+PUqVOIjIyUc3qEIYqYfkF0Ry9q1hQj5mfpCMuK59zBKzTBgEmaZoojrYo27Iz9Enc1zOMdQ4Gy9i+SWmbKto24yjART1ff7/R+nCka1G6gPc47oSZfIXeDSgLBLcp39Am4OWwsDHrL8Vu3DhldFG8jq7Gybt06DB8+HP/617+sx0aOHGn9f4ZhsHHjRjz11FNYsGABAGDLli3QarV4++238eCDD8o5PcIQRXS/oA4TGredRMQ1w9D+VbXz+wbPutJS4Sr8bszLGFs7TNx83EjeLa0rRX1HHV6o/a3lnhyeGxoMGnecQnhWwoBZ2KU0qCQ6IgSfQJstwm0culyWYxRQuMKil0JCQpKRNQy0Y8cOTJkyBQsXLkRiYiImTZqEzZs3W9+vrKxETU0NCgoKrMdCQkJw7bXXoqioiPOa3d3dMBgMdv8IBClI7QPUftDZUPEGsT9LxxNXPoEmlbi/YXf6F9Ub6y29hUwxvJ2hFaCgbIfbnaf9gdwNKgkEyVQV2SvMOsEAhmrLOIJkZDVWzp07h1dffRXp6enYvXs3fvWrX+G3v/0ttm7dCgCoqakBAGi19h0jtVqt9T1H1qxZg6ioKOu/4cOHy/kRCIMQuqNX2gleViJSRoVYE3jzU/Jxz/UPoSmoFbTAjdztX5SgTkCsSdx5A2lh90WDSgJBEu38jW/dGkewQ9YwEE3TmDJlClavXg0AmDRpEk6cOIFXX30Vd911l3UcRdnv+BiGcTrG8uSTT9r1xzEYDMRgIYiGoRm0fnrOL/cOvyoJYVnxTqW1+an5aF9Yh+a3T4EBw+kBcbd/0eTEydgSIW5PMpAWdl81qCQQRBOhdT1GyjiCHbJ6VpKSkpCZmWl3LCMjAxcuXAAA6HQ6AHDyotTV1Tl5W1hCQkKg0Wjs/hEIYhGT6yAXYVnxCE2L5jQ6IiYkIn5RBlRRIXbHbb0w7qBUKHFz3m2oVzXzem4YMANuYWcbVArhrQaVBIIoUqZbmgvyhFsBCtAMs4wjSEZWYyU3NxenTp2yO3b69GmkpKQAAFJTU6HT6bB3717r+z09Pfjyyy8xfTr5hbrinXfeAUVRuPnmm/09lQGDHKEOKtj110iMMRCWFQ/d8qmIvz8bsb8ci/j7s6FbnuOxXkh+aj66Z0WAApwMFtaTMxAXdrZBpTLK3iPkqYFHILiFQgnMXdf3wvG71Pd67lqSXOsmsoaBHnvsMUyfPh2rV6/GrbfeipKSErz++ut4/fXXAVjCP0uXLsXq1auRnp6O9PR0rF69Gmq1GrfffrucU5MEYzbD+N33MNXXQ5WQAPWUK0Ap/fsHV1VVhccffxxXXz10G1u5gxyhDqbHdfmyWGNAri64V+Zdh/a4OjTuOAW09x9XRYXK0nnaV/iqQSWBIAZ63I2onroW7YfeQERvLYapW6GgYPG4zF1LypY9QFZjJScnBx9++CGefPJJ/PGPf0Rqaio2btyIO+64wzrmiSeeQGdnJx5++GE0Nzdj2rRp2LNnT8BorBj27EHt6jUw2YSqVDodtCufhMamisnbbN++HatWrcLZs2ehVqsxadIkfPzxxwgPD4fZbMYdd9yBVatW4eDBg2hpaZFtHoON4BQNFOFB0pNs3UQZFeI1Y8BTufyICYkIz0oYdAu7XAYegSCFM8VF+Pyt19He1ABAC0CLiEg1rvu/AqTfeA/xqHgI6bosdO09e1D96FLA8UfUl/w77OWNshgser0eI0aMwPr16/Gzn/0MbW1tOHjwIO666y5ERETg2WefxbFjx/Dhhx/i7rvvRktLCz766CPe65GuyxbEyuJH5CZDER0Cw6eV7t2IAsKnJyMsM85rxgBX92+tWosVU1cMmO7fBMJg5UxxEXZsWM37/vxlK5E+jaQ2OEK6LnsBxmxG7eo1zoYKYDlGUahdvQaRs2Z5PSSk1+thMpmwYMECa35PdnY2AODrr7/GG2+8gaNHj3r1noMdvl5Atth6QRiaQcehaveScRmg4+tLCPWiobLswDIwDvkmdcY6LDuwDBtmbiAGC4HgJ2jajM/fel1wzBdbXkdazjQo/OBdoWkzqk+eQHtLMyKiYzAsY7xf5uEpxFjhwfjd93ahHycYBqaaGhi/+x7h06Z69d4TJ07ErFmzkJ2djTlz5qCgoAC33HILVCoVFi1ahM2bNyM+fmDmGPgDMdLsivAgaH8/BQqVJVmWrTZxZeAI4Q25d1Yu39FQAfqTY9eVrEPe8LxB0UGZQBhoVJ880Rf64aetsQHVJ09g+PgJPpqVBfvQlIWI2Hhcd/cDA87TI3sjw4GKqb7eq+OkoFQqsXfvXnz22WfIzMzEpk2bMHbsWJw9exbnz5/HvHnzoFKpoFKpsHXrVuzYsQMqlQoVFcIL8lBFbC+gnip7JVm+ahOxsHLvnlBaV2oX+nGEAYMaYw1K60o9ug+BQHCP9pZmr47zFmxoytGQam9qwI4Nq3GmeGAp6RLPCg+qhASvjpMKRVHIzc1Fbm4unnnmGaSkpOCzzz7D8ePH7cY9/fTTaGtrw8svv0zE8XjwRJrdqdokIghN750CbRCXoPtDZSmmpV0nab621BvFGcNixxEI/oSmGejPtKDD0I1wTQiS0qOh4PA8ih0nfDOzRdq+vdYixJYyXZYk14joGK+O8waBHppyB2Ks8KCecgVUOh1MtbXceSsUBZVWC/WUK7x+7+LiYuzfvx8FBQVITExEcXEx6uvrMWnSJGRlZdmNZTtYOx4n9OOpNLtjtUnM/NGiw0Nf/rgfV8y8BiqVe1+1BLU4Y1jsOALBX1QcqcPBd8+go6Xbeiw8OgRX/yIdaZMSJY8TpHyHpamgba8eTbJFB0VE+TBfnoeZZlBS2YS6ti4kRoZiamoshmWMR0RsvGAoKDIuHsMyxoubuxcI5NCUuxBjhQdKqYR25ZOWaiCKsjdY+qqBtCuflEVvRaPR4KuvvsLGjRthMBiQkpKCl156Cddff73X7zUUkEWaPUwJdJpdDrv9p7moXvsNEm92T6RscuJkaNVa1BnrOPNWKFDQqrWYnDhZ8rUJBF9RcaQOha+VOR3vaOlG4WtlmPtgFtImJYoeJ0j5DuC9u+DU1Mugtxy/daugwcKX5xFz3UL85Wwo9K1d1uNJUaF4dl4mrrv7AcFqoLzFD/jUgxGooSlPIDkrAmgKCjDs5Y1QOUj/q7Ra2cqWAUtLgsLCQtTV1aGrqwunTp3Cr3/9a86xb731lmDZMsG70uzWqiIBQ8XRqFC0M2jcdhKdZcI7HS6UCiVWTF0BAE49g9jXy6cuJ8m1hICFphkcfPeM4JhD752ByUSLGkfTAmobtNniUeFsLdF3rHCFZRwHQnkeF7a/CvWlcrvjNa1deGhbKSrCUzF/2UpExNpvSCLj4v1SthyIoSlPIZ4VF2gKChA5a1bAKdgSpMEmyzrqrEgRbWNoBs0fCD9MAX6jwt3qoPyUfGyYuYFTZ2X51OWkbJkQ0OjPtNiFdLhob+5G2YGfRI3Tn2nBsLE8i2xVkX3oxwkGMFRbxqXaq3+LyfO4uvFrnFOPBEMp2KuBArBqZzkOLb8OaTnTAqJMOBBDU55CjBURUEql18uTCb7HU2n2rooW0EaT2/dnq4PcUVvNT8lH3vA8jxRsCQR/0GEQNkBYWhs6Pb9eO3/lnKtxrvI8KACR5nYkd+lRHTbMepwBoG/tQkllE65KiwuIHBCFQhlwoSlPIcYKYUjhiTR7zznPypABzxopKhVK5OhyPJ4DYejhaasGTwjXhLgeBCAqPszz60Vo+d9zMU5s/obabOQ8XtfWxXncX6RPm475y1Y65d9ExsUjb/HA01khxgphUMDQzIDoeSNHI0UCQQh/t2pISo9GeHSIYIgnIiYEWTMvw9F9F12OS0qP5r9ZynRL1Y9BD+68FcryforzQi02f8OoVHMeT4wMvFYm6dOmB0xoylNIgi1hwNNZ1oCadSVo2HwcTe+cQsPm46hZVyIpoZWhGXRVtMB4tA5dFS1gOJL4QtIkVAtxILniiEDwELZVg6OwINuqYV/VPtnnoFBQuPoX6YJjZtyaDpVKIWqcoN6KQmkpTwYAOI7rez13LafeCpvnwQcDoE0ZgUuhSU5XTYqylDEHIgqFEsPHT0BG7rUYPn7CgDRUAGKsEAY4bHWOY1myubVHdAUOl7GjX1uC1n1VdsZLyKhoKNTCzkgGDGjOHZ34iiN/IMZYIwwsXLVqAIB1Jetg5qmM8SZpkxIx98EshEfbh3AiYkLsypHFjhMkc76lPFljb1RAkyxYtszmeQhxMC7XmlwL9JtDz87LhDJAv9uDBRIGIgxYxPT8YStwaNCcMXu+Boe0oQdt+y5YXyujghE9Lw0xC9LRuO2ktS8PF05HKSDi6mFu6az4Aq5u1OznDdQ5E1wjpVWDL3Kh0iYlInVigktlWrHjBMmcD4y7UbKCrVCeR3TeQhjPhgI2Oiu6Pp2VuVlJXJcjeBFirBAGLGJ6/phbu/HNt5/jmeo1zjH7KSswfmekqHuxnpq4RRmIvX0cmv77I2dInALlvJNlgPavqhEyQhNwiz+fsWb7eQNtzgRxeNqqwSuS9w4oFBR/2bEb44QvonQqTxaDUJ7HzzkUbIlHxTcQY4UwYBFbWXPo632oT6izc3nUGevwr89exbrWpZLu2bLzHGIWpnPn7vXB53HxRhdmbyLFMxUocyaIx5NWDV6RvB/AsHkejigVFK5Ki/PDjAgkZ4UwYBFbWXN74w146+zzmG643HqMAYNYk0byPc2t3eiucK+E2dzaja+K9uBwzWGf5Am4QqxnytPO0QT/wLZq4A9XUtCpdU6tGljJe8eqHFbyvuJInaj70zSD6lPNOH24BtWnmoWVZwcQNG3GxRPHcPLrL3HxxDHQAfBdHgoQz8oA46233sI999zjdLyzsxOhoYFXOicVKSXIYnr+sMSZovF09f14HptRpDkKAEjq8X3zv/dL38GXFd/5tHSUD0+6URMCH7ZVw7IDy5zCk3ytGsRK46dOTBAMCQ1Wzwxf36Dr7h54uiUDDeJZEUGg7RA0Gg30er3dv8FgqEgtQRbT84dFAQoMgAdrb4GCoTDdcDnubLiJs1LCFcGjLEaSOzSpLF4KX5aO8uFpN2ouSFVRYMG2akhU2xsIWrUWG2ZucDKWxUrjV5/mF1DzlmdGLL7ydAj1DdqxYTXOFBfJcl+CBeJZcYG/dgjbt2/HqlWrcPbsWajVakyaNAkff/wxAICiKOh0Otnu7Q/cTfQMy4rHT3N6of7ciNheYQ0TBSgkmmKR3ZGOX9UuBMCfX8IFAwaqqFCEpkUjel4a53z5oMGgQdWME+qz1mtRoLCuZB3yhuf5RTbf292oSVVRYCKlVYNYafzdr5ch785xTs9Ab3lmxOIrT4eYvkFfbHkdaTnTBqyOSaBDPCsC+HqHwKLX63HbbbdhyZIlOHnyJA4cOIAFCxaAYSy71Pb2dqSkpOCyyy7DTTfdhCNHjsgyD1/BJnryeTkYMGjZeY5zl76vah8euLAUd6atxNtxu0Tdb4JxDBJMMZIMFZaqK9tBKShrY0QxHhYaDCgAr2m3g6b6P4Nt6ag/8KQbtaMHxXis3mO9G4J8sK0abhh1A3J0ObzGsVhp/G6jifMZKNYzoz/TIuo+QvjS0+GqbxAAtDU2oPrkCa/dk2AP8azw4Osdgi16vR4mkwkLFixASkoKACA7OxsAMG7cOLz11lvIzs6GwWDAyy+/jNzcXPzwww9ITxdWfwxU2ERPoURAriaAtqJXDAUcDT+F2xtvkG2enVQ3PjqzAznXXgulQsnZGJHu6EXrp+fsFu0GVTNe02635so4IrbEVA7c6UbN5UFxZfeRqqKBgRhpfFscn4FiPTNix/Hha0+H2L5BYscRpEOMFR6k7BA81gNwYOLEiZg1axays7MxZ84cFBQU4JZbbkFMTAyuvPJKXHnlldaxubm5mDx5MjZt2oS//vWvXp2HrzAZxDUAcxznKHp1Qn0W9apmxJmioeBYPdlQzA/q024ZNWFMCB45txDlRYeRPcPyO+BqjBiWFY/uylacufgj1pSvxwn1WTuPiiNiS0zlQko3ar5wnavUH086ThN8ByuNX/hamajxjs9AsZ4ZseP4kOLp8EYXZLF9g8SOI0iHhIF48NUOgQulUom9e/fis88+Q2ZmJjZt2oSxY8eisrLSaaxCoUBOTg7OnBH2AgUyFabzbo2z9UgoGArjjaNxMLIUFMApeU+BgjEvDEt/thxUmHQ7nepL0g3/olswcZQ1YDKvyUFdggEMjzOBr3TUH7BzVl+eiNC0aN7QjytdFiFIVdHAgJW8DwkX9x2xfQaynhkhXDYjFIGvPR2u+gYBFpXbYRnjvXI/gjPEWOHBVzsEPiiKQm5uLlatWoUjR44gODgYH374odM4hmFw9OhRJCUNXLnn6pgm1KuaeXvq0GBQp2pCdUyT3XHWIzHdcDneOvs81l94DAuaZ3GqyCqjQhC/KAMzZhVgii4HlJvRCAUoBHcoRGmPsKWjgHMiL1/paCAjRpdFCNJxeuCQNikRc+/LEjXW9hkotmmhp6FzX3s6xPQNylv8AEmulRFirPDgqx0CF8XFxVi9ejW+++47XLhwAR988AHq6+uRkZGBVatWYffu3Th37hyOHj2Ke++9F0ePHsWvfvUrr8/DVyREJOAf2vc5PSK2yakJEf3hEjNtBs3QyDdOx9PV9yPeFG13Hmuw7E78BrH3jYdueY41/6K7shW00eTRnMV6CaSWjgYynnhGSMfpgUfy2Bi3noFeaUboAn94Oti+QY73jYyLx/xlK4nOisyQnBUexMRuvbFD4EKj0eCrr77Cxo0bYTAYkJKSgpdeegnXX3899uzZgwceeAA1NTWIiorCpEmT8NVXX2Hq1Klen4evmJw4GRU6Pf6MzXiwdiESTP27oQZVM17Xbsc5XY01XLKvah/WlqxFfUcd3qp+HoCz50IBCjQYXGe8EmGjYuzCGt4IR5jaesDQjKiEUSmlo4GMJ56RQO44TeDGk2egV5oRCs7N4unYsWE17xg5PB1CfYMI8kIxbD3sAMVgMCAqKgqtra3QaOzl07u6ulBZWYnU1FS3RdO4dFYiYkIw49aBo8TojZ+D3Oyr2odlB5ZBwVDINKYh1hSFJlUrytUVoCnG6oVgxzFgkN2RjvUXHnN57bh7s0ApKJgNPTC394Du6EX7gZ88nvNQ0xBhaAY160qEQ0EU7JJthaqKCN5HjuaDgfwM5NJZiYyLR95ioig7EBBavx0hxooI5HgA+JJANlbMtNnqcbjQdgHbT2+3q/DRqXVYPnU58lPyYabNmLt9LhIaIhFrisKIbp2oqh4qTAWm07OwjxBDqTMxbzVQH7G3j4MiPEhUuwSCd5FTwDKQn4E0bSaejgEKMVb6CORF2pcE6s+BDefYGieJYYlYOGYhRmhGOIVLjh/6FqbCOrswUSCgjAqBbnnOkFmUuZVqiQfFn7AClnx4K1eEQPAmUowVkrNC8Au24Rxb6jvr8fcf/o4NMzcgR5djPd5Z1oDoT3oARNuNZ893R43WWww1DREpuiwE+fGngCWB4CtINRDB59gqzzrCHltXsg7mvoZk/foeFG8JsDsNCb3JUNMQEaPLQvANvpS4JxD8BTFWCD7HUXnWEceeOf1y/NxQXEaMG6JvnkA0RAj+wp8ClgT58FU36YECCQMRfI7YXjjsOLFy/G/HfYZrJ+VjYupkgGHQ8E9xkuGeQjRECP7E3wKWBO/jq27SAwniWSH4HLG9cBLUCdhXtQ8rjjwlavyM3FmYln8dQtOiLaJvPopMhGVZ8jeEJPgJBLnobHcdgpRLwJLgfXzZTXogQYwVgs+ZnDgZWrVWsMuyTq1Dc1czlh1YBnNHj6WzMk9eCgNAERWMq668DoAlGbfp7R9dNtfzmL7pt399CQ2bj6NmXQk6y4SbqxGGLgzNoKuiBcajdeiqaPGKcUvTDA69f9bluNxb5BGwJHgXsd2kh2JIiBgrBJ8jpmfO73N+j/WH14NigAdqF3KO7T8HiL7RopDqabM9V0Tmj0BEbrLlhcNaY27tQeO2k8RgITjRWdaAmnUlaNh8HE3vnPKacSsmuRYAwiKCPLoPwTdI6SY91PCZsbJmzRpQFIWlS5dajzEMg+eeew7JyckICwvDzJkzceLE0PslDEXyU/Lx4rUvIjok2u442zMnJjQGtcZajDeORoIpxmVpsiLc8jAW22yPCpUmGqXQBCNuUQY0141wucC07DxHQkIEK6yQnuPfpTeM24BJrqXNQOVB4Ph2y3+H4M7fG/i6m/RAwifGyuHDh/H6669jwoQJdsfXr1+PDRs24JVXXsHhw4eh0+kwe/ZstLW1+WJaA5aWlhY88sgjSEpKQmhoKDIyMrBr1y5/T0sS+6r2Yf3h9Wju7v/SxYTE4Pc5v0d+Sr41uTbWJC5xlS0dFltCHD0/DZobU0WNDR6lQdKKqQjLihdlDLG6KwSCGE8fn3FL0wyqTzXj9OEaVJ9qBs0xJiCSa8t3ABuzgC03Af+71/LfjVmW437CTDP4pqIRHx+txjcVjTAPkM2Dr7tJDyRkrwZqb2/HHXfcgc2bN+P555+3HmcYBhs3bsRTTz2FBQsWAAC2bNkCrVaLt99+Gw8++KDcUxNNIMk59/T0YPbs2UhMTMT27dtx2WWX4eLFi4iMjPTLfNyBTxCupbsFj3/5ODZQG6xJuE0qcYs+WzostoRYGRWC3up2UWN79Ubr/4s1hoaa7gqBGynGra2ooFjpfLY7vFAoSNbk2vIdwHt3wSkmatBbjt+6FcicL8+9eSgs02PVznLoW/urCJOiQvHsvEzMzUry6VykwnaTFgoFebub9EBBds/KI488ghtvvBH5+fl2xysrK1FTU4OCggLrsZCQEFx77bUoKuLPdu7u7obBYLD7Jydniouw+ZF78d4fV2LXX1/Ae39cic2P3Ct7Rvb27duRnZ2NsLAwxMXFIT8/Hx0dHXjzzTfR1NSEjz76CLm5uUhJScGMGTMwceJEWefjLcQKwk2MnwitWotydQXqVc2gBbJlbUuHQ1KjoIwSNliUUSEITtHAeFRcCTXTabJ6SsQaQ0R3hQC4Z9yy0vmOBkhHSzcKXytDxZE66zG2M7IQcnWHB20GCpeDO5O971jhCp+GhArL9HhoW6mdoQIANa1deGhbKQrL9D6bizuw3aSFkKOb9EBAVmPlnXfeQWlpKdasWeP0Xk1NDQBAq9XaHddqtdb3uFizZg2ioqKs/4YPH+7dSdvgrxIyvV6P2267DUuWLMHJkydx4MABLFiwAAzDYMeOHbjqqqvwyCOPQKvVIisrC6tXr4bZPDBixGIF4X5o+AErpq4ATTF4Tfs+KMDJYGGNm+h5o6wKqpSCQvS8NLv3Wei+iqKqK9vRU2UA3dEret7sYiLWGCK6KwRAunErVjrfNiSUNikRcx/MQni0fagnIiZE3p5AVUWA4ZLAAAYwVFvG+QAzzWDVznIh0wmrdpYHfEgofdp0zF+2EhGx9n22IuPiMX/ZyiGrsyJbGOjixYt49NFHsWfPHsHmeRRlb/EzDON0zJYnn3wSy5Yts742GAyyGCxiS8jScqZ53crV6/UwmUxYsGABUlJSAADZ2dkAgHPnzuHzzz/HHXfcgV27duHMmTN45JFHYDKZ8Mwzz3h1HnIgRRDuhlE3YMPMDVhbshbPYzN+VbvQromhKiqUs3leWFY8fprTi5D97XbjG5TN2B3zNS4dr0doPYV4CX/+7GLCGkNCnYdtjSeCd7Dtzu3Y4FJOGJrxqAcSa9wKhYJsjVsp0vnDxvb/badNSkTqxATfdkZu5990uDXOQ0oqm5w8KrYwAPStXSipbMJVaXE+mZO7pE+bjrScaYLpB4GUnuALZDNWvv/+e9TV1eGKK66wHjObzfjqq6/wyiuv4NSpUwAsHpakpP44Yl1dnZO3xZaQkBCEhMivxCilhGz4+AmC46QyceJEzJo1C9nZ2ZgzZw4KCgpwyy23ICYmBjRNIzExEa+//jqUSiWuuOIKXLp0CS+88MKAMFakCMIBlqqhvOF5KK0rhb69HormIKSpRkKlCbUuHI4L2cT4iXi6YTXqR9dhvHE0Yk1RSO5JwPUtM3BnwzzLDYQ2hBzYemHCsuIRtyiDdB72EVzdubVqLVZMXYH8lHyBMz2Du7t0MKLnpYn+HUs1bj2p7lEoKDsDRnYi+J/Tbo3zkLo2cUrXYsf5G4VCybu2DEWFW9mMlVmzZuH48eN2x+655x6MGzcOy5cvx6hRo6DT6bB3715MmjQJgCV59Msvv8S6devkmpZo/FlCplQqsXfvXhQVFWHPnj3YtGkTnnrqKRQXFyMpKQlBQUFQKvst6IyMDNTU1KCnpwfBwYGdK8EKwtUZ6zjzVihQ0Kq1mJw42XpMqVDadWC2hWshiwmJsVQZUcDx8DOYbrgcdzbc5HQuA/Eit62fViIsK966qJDOw76BLxm7zliHZQeWYcPMDbIYLGy5sSNsuXHcogzRBosU4zYgqnvEkjId0CRbkmk5gy+U5f0U3yyeiZH8Hnx3xgUqbHqCI2x6wmANFclmrERGRiIrK8vuWHh4OOLi4qzHly5ditWrVyM9PR3p6elYvXo11Go1br/9drmmJRp/l5BRFIXc3Fzk5ubimWeeQUpKCj788EPk5ubi7bffBk3TUCgsKUenT59GUlJSwBsqQL8g3LIDy0CBsluEWC2V5VOXi3Lx8y1ktuXQCobCr3hE5aSYFVwVG2znYYI8uErGpkBhXck65A3P82pISGy5cWhmnGjjVKxx6/fqHgCM2Qzjd9/DVF8PVUIC1FOuAKXk+PkqlMDcdX3VQBTsDZa+zzV3rWWcD5iaGoukqFDUtHbxmU7QRYViamqsW9cPhLCLP9MT/I1fGxk+8cQT6OzsxMMPP4zm5mZMmzYNe/bsCYgyXH+WkBUXF2P//v0oKChAYmIiiouLUV9fj4yMDGRlZWHTpk149NFH8Zvf/AZnzpzB6tWr8dvf/tbr85CL/JR8ay6Ko2t/+dTlonbKQguZLayonDcg5ci+RUp3bj7Pmzu4W27sCjHGLVvdU/gafxNO2ap7ABj27EHt6jUw2RQ5qHQ6aFc+CY1N5aaVzPmW8uTC5fbJtppki6Hiw7JlpYLCs/My8dC2Uj7TCc/Oy4TSjZ9doIRd/Jme4G98aqwcOHDA7jVFUXjuuefw3HPP+XIaomBLyLjcbSxylZBpNBp89dVX2LhxIwwGA1JSUvDSSy/h+uuvBwDs2bMHjz32GCZMmIBhw4bh0UcfxfLly70+DzmxzUVxJ2nS1ULGIlZUTgykHNm3SO3O7S38raXDVvc46qxExIRgxq3pslX3GPbsQfWjSwHGfgNgqq21HH95I7/BMu5GS9VPe60lRyVlus88KrbMzUrCq4smO+ms6DzQWQmksMtQVrj1q2cl0GFLyBwt6si4eOQtls+izsjIQGFhIe/7V111Fb799ltZ7u0LbCsssiPTEZxyBXqqDOg+1ig694NrgVIwlDWhtknVihPqs6JF5VxBypF9j9RkbG8RCFo6vq7uYcxm1K5e42SoWN5kAIpC7eo1iJw1iz8klHq1LHOTytysJMzO1KGksgl1bV1IjLSEftzxqARa2MXf6Qn+hBgrLhBTQkYQD1eFhaPPVkzFheMCNd1wuVNpc72qGVuSd6Je1Yw4UzQUkrJU7HG3HNlfJbeDAXeSsb2B1HJjLmia8djQ8GV1j/G77+1CP04wDEw1NTB+9z3Cp031yZw8QamgvFKeHGhhl6GscEuMFREIlZARxGGmzSgvOozoT3rglOrK071YqOLCdiG7yjART1ff7zQmzhSN3124ExXjGhD/o7TqH1s0+SPcKkf2VcntYDWIvJmMLQVPtXTESuUHEqZ6caE0seMGC4EWdlEolMi76z7s3LiWd8xgVbj1WddlwtBlX9U+zN0+F6ZCi0y4WINBqHsxu5BRDHirfRSgwACIqQhGzG1joXKhPMt5n6hgRF43QvJ5bKWSY14NW3K7r2qf5Gvy3WfO/+Zgye4lWH5wOZbsXoI5/5vjtev7GzYZO1Ftv8iz3bnl0llhy40d1YqVUSGCRrQUqfxAQpUgLpQmdtxgIdDCLmeKi/DF1n9yvjfYFW6JZ4UgK+yindUhvSrHVcVFfko+nk56HAk/8l9XAQpxvVGo6KlE+o1paHr7R0lziJ6XJjn846uSW39pkPgaT5OxxeIUusmMg06Clo5YqfzUiQmy5p6IKjt2QD3lCqh0Ophqa7nzVigKKq0W6ilXOL83iAmksAtfoi/LtXfdN2gNFYAYKwQZsV203a3KcVVxMYzSibpOR5MBraXnRN9XqhqtbdLwmd5zqO+o43UheaPk1l8aJP5CSBjQG3gjdOOuVL63kFx2bAOlVEK78klL1Q9F2Rssfe1PtCufFGX4DCb8WRVqi5hE3y+3/hPpU68alCEggISBCDJiW17sblWOq4qL8BiNqOtEmSNcamcAQGTecMTfnw3d8hzRhkpnWQNq1pWgYfNxNL1zCnH/68VbZ5/HdMPlgud5UnIrRYOEIIy3QjeeSOV7Clt27Jgky5YdG/bscXkNTUEBhr28ESqHdicqrRbD+MqWhwCB0FhQSqLvYIV4VgiyYKbN+FbfX159Qn1WclWOmHLh8ZOmoHxHIaJ7NZzXpcGgOciAUdopaIWwix4AgrRqSUJffLLscaZoPF19P57HZhRpjnKe60nJrb80SAYb3gzd+Esq3+OyYxs0BQWInDXLrVDSYMbfVaGBlujrD4ixQvA6XFUwNMXgH9r38XT1/aDB2BkWfFU6YsqFVSoVjNepEbMbTtelwYAC0HmdGkHR4vqBSNHOEJJlV4ACDQYP1t6CbyN/AE3ZV7J4WnLrLw2SwYY3Qzf+ksr3dtkxpVQOiPJkX+PPqtBAS/T1ByQMRPAqfFUwAFCkOYrnh21Go6rF7jjlYI+4qrhw5Mq861A9x4SWIIPd8TZlB6oLTLgy7zqrdoYQUoXfXMmyK0Ah0RSL8cbR1mPeKrllS7cdK6Bs76NT67yuQeIvaJpB9almnD5cg+pTzaB5qsSk4s3QDSuVL4QcUvmk7Hjwwyb6CjFY9VVYiGeF4DXE9Osp0hzFt5E/IMuYjliTBrdNWYQrp+ahp8rgUffiK/OuQ3tsLRo/Og1lp+VYlDkCscXB6ExsQGhmHMJzdDDsu8B7DanCb2Ll1m2Ti6X0PxLCXxok/kBO3RJvh278IZU/0MqO5dQFCoRmg3IQKIm+/oQYKwOMmTNn4ssvv3Q6fsMNN+DTTz/1w4z6Eduvh6YY1Me34ZHLHsbl6mz0VBncMlBs6SxrQMt/T8Pxq8oKzFEhCjDdNOe5QpU/Qg9WsSGj+696EDfELfT6g9kbDSEDHTb51RE2+XXug1keGQByhG58LZU/kMqO5RRKDJRmg3LB1/4lNCISk6+fh7ScaX6cnfxQDMP11z1wMBgMiIqKQmtrKzQa+8qQrq4uVFZWIjU1FaGh4nIWuLAtS3V35+8tmpqa0NPTv6NvbGzExIkT8c9//hN333035zne+jm4Yte5XVh+0HVDxedifo+rysaCNvR/DjES+3wwNIOadSWiqn0cicwfAc11Izh/n64erGLuq4wKgW55jqx/L4NVwZamGWxdWeTSkLjzz9M9MgT4DCIWTw0iX2BtQghwlh0HQjUPny4Q6wn0RBfIlQbJYBJLo2kzij94D9/v2oHujjbr8YFomAmt346QnBUXOJalNmw+jpp1JegsEy4j85Tt27cjOzsbYWFhiIuLQ35+Pjo6OhAbGwudTmf9t3fvXqjVaixcuFDW+YhBTDLndMPlmFqUameoAP0eEHd+rq5yR4QwHub2BIlRoGVl2YVwt6eQFFgNkhtG3YAcXc6gMFQAacmvnsCGbsKj7UM9ETEhA8JQAQK/7NiVLhAArCtZBzNtlnxtsc0G6b5rm2kG31Q04uOj1fimohFmL+U/+YqKw8Uoev8/doYK0N8F+kxxkZ9mJi8kDCQAX1mqmN41nqDX63Hbbbdh/fr1+NnPfoa2tjYcPHgQXE6wN954A7/85S8RHh7u1Tm4s1t31XhOySjwSN0vBAuXW3aeQ2hmnCy5I1xwqeRKEVxjZdkdmzNKFZWTQiB5+uTEl7olvg7dyIGmoACReTNh3LUVpksXoEoeAfUNd4EKEghX0magqghorwUitEDKdEsHZR7MNONWN2MpukBSxf+kaJCcYBKwamc59K1d1veSokLx7LxMzM1KknRffxBoXaB9CTFWeBAqS2VxZ2EVg16vh8lkwoIFC5CSkgIAyM7OdhpXUlKCsrIyvPHGG169v7txZVdJn+ONoxHbK1xtY27tRtvX1YjMHWb3cxVaoKWUG3PhaOxIfbCGZcUjVIIsuydwda32JIQWyPhat8SXXY5loXwHqMLlCDdcsryuBVDxEjB3HZA5n3M8CpcD7HgA0CTzji8s07u90MupCyRWW6To+DmsOHrRaQtS09qFh7aV4tVFkwPeYAm0LtC+hISBeBATWmB35d5m4sSJmDVrFrKzs7Fw4UJs3rwZzc3OX8g33ngDWVlZmDrVe5oInjbgE2o899sxj4iag+HTSrtQm6tQnJiyZCEcjR13HqyUgkJoWjTUlyciNC3aaqgwNIOuihYYj9ahq6KFtzGjGFhPn+PfpSchtECGTX4VQg7dkgFJ+Q7gvbvsDQ8AMOgtx8t3iBx/CXjvTqfxhWV6PLSt1M5QAfoX+sIyveD05NQFEqst8p9jLZx1iuyxVTvLAz4kNJTF4YixwoPY0IInIQg+lEol9u7di88++wyZmZnYtGkTxo4di8rKSusYo9GId955B/fdd5/X7uutuHJ+Sj52/3w33pzzJtZdvQ5vznkThT8vxMRU8Zof7ALc+PZJlwu0mNwRPri0Vbz1YPVmvpNYT58nxlCg4S/dEjlhzGZ0FJeg9ZNP0VFcAsYsPUfDCdps8ZAILcWFKyzjXI7vY+ej1vFmmsGqneUeLfRy6gKJ0SAJjorFcXMc7/sMAH1rF0oqmyTf35cMZXE4YqzwIDa04GkIgg+KopCbm4tVq1bhyJEjCA4Oxocffmh9/7333kN3dzcWLVrktXt6s98MV9KnOx6QzmPCCzu7QLO5IwqNtOtzJcB648HqbS+IPz19/mQwJL+yGPbswdlZ+biweDEuPf44LixejLOz8kX17RGkqsjZQ2IHAxiqLeNEjQfQ2QR89SIAoKSyycmj4nB1lws9GyIG4PS98lQXiNUgESJ21kIwlOvlrq6N/3N6Ck2bcfHEMZz8+ktcPHHMmvArhaEsDkdyVnhgF1ZXZalSFE/FUlxcjP3796OgoACJiYkoLi5GfX09MjIyrGPeeOMN3HzzzYiL498tSEVK+MOdBFzWA8KVtOwutgmybO5I2+cXBMXfAOEEWE8F1+TId/Knp8/fDIbkV2tpsUOSPNtoEJ5U7LS71jayGyd2fPE/gGseF72Auxonpy4QnwZJZFw88hY/gIb4scCRbwWuYCExUh5pB29pwIgVh2MAHK45PKjkDIixwoOYhVWuslSNRoOvvvoKGzduhMFgQEpKCl566SVcf/31AIDTp0/j0KFD2OPpjswBseGPC20XMOd/c9wSduKrnvEE2wWaUlDQ5KcgSBfudA9FeBDUlycgNDPOZQKsJw9WKV4QsU0T/e3p8zcDOfnVm40GOYnQuh5jO07s+M4moKoIiZGZooaLWejzU/KRNzxPFl0goWaDo2gGSVGhqGnt4gxnUQB0UZbqJm/DpwHDlhpL1YBxZZhV6Yx4yM3ncyBDjBUB/FGWCgAZGRkoLCzkfX/MmDGcZcye4qr0GADCVeH429G/OR2vNdbisQOP4ZHLH8H92fcLPnxYD4jh0E9o23Xe43lzLdBhWfEIGReL9m8uwdzUBWVsKCKuSoZCJT7y6e6D1WQQtxOV4gXxp6fPWwxW8TpXeLvRoBMp0y1VPAY9uPNQKMv7KdP7x4dFA50trq/dXoup42d4daFnQ8RywNdsUKmg8Oy8TDy0rRQU7H9K7Jbl2XmZosqwpSBXqTGfYfb5xS84hffYAglPhPf8DclZcUFYVjx0y6ci/v5sxP5yLOLvz4Zuec6gKxMFhOPKLB2mDsFr/O3o31CwvcBl1dD+i/txS80S1KuaQQsl+rmAb4HuLGtA7QuHYfi0Eh3f6GH4tBK1LxyWnCsiVXBtX9U+rDjylKhrS/GCBIoAnbvsq9qHOf+bgyW7l2D5weVYsnsJ5vxvjsu/k8GA7I0GFUpLuTEA5/7lfa/nru3XT1EogWkPi7t2hNa60AtcXZaF3tvMzUrCq4smQxdl7wHSRYXKVrYspdRYKqxhlpF7LYaPnwAGkE14LxAgxooI+MpSByN8pcdSqOu0L3N2LN/dV2kpj67prME/tO/37XTcM1i4Fmi+5FaTl0p8+cqR2bLvg4rDLo0wd7wgrKfPMUlZapdqX+NpObxU5OrQ7C4+aTSYOR+4dSugcVhwNcmW4466Kdc8DoQJeUIoQDPM6o3xx0IvB3OzknBo+XX47/1X4uVfXo7/3n8lDi2/Trb5+7LU2JsFEoEICQMRnMhPycc1w65B/vZ8NHe7/yVaV7IOV7ZOQNunlXaGQ2JQF65KnIgizVEUaY7ieWzGr2oXIsHEn5PAKsey8IXihJJbKQA0GNR8VI6RmVe7ZXTyibJF3piKtacsuxqGAv6hfR9PV98PGgwUNvO2GGUUIm8c6db9fSlA5w2kqAF7IyQkZ4dmd/FZo8HM+cC4G8Up0iqUwLyXLVorTr8bDm8MLAv97EydWwq2gYRSQeGqNO8VJgjhy1JjOYX3AgHiWSFw8kPDDx4ZKgwYjKrRofntU04ejuheDZ6uvh/TDZcDAIo0R3H36KexNX4nGDBOHgn29QdJXyD6F+mCoThXya0KUAhqp/DNt59L/kxC5cjNb59CWk3/7qxIcxTPD9uMRlWL3dh6VTOeH/Y6bj51u9sehYHk6fPlbo9tSOjYT4jt0FxxpM7je7gDpVRCu/LJvhcOv6u+19qVT7qXXOuIQgmkXg1k32L5r5ABaPXGJNsf5/PGoH+h/7/Lh+GqtLgBZ6j4Gl+WGsspvBcIEM8KgRNPrW8FQ+FXtQuBPk+C3XugQIPBg7W34NvIH0BTDGiKwX8TPkNViN7Jy9Kgasbr2u24Zf5iRKToBO8rNml11/GdmHblTNG7edflyPafB7AYLN9G/mBpM2CKQpOqFSfUZ0FTDCgjNeAT3sTgq90eTTM4+O4ZwTGH3juD1IkJTiXPNM3IXhatKSgAXt6I2tVr7JJtVVottCuf9F+jQSneGIJkxJYae6OPj6sCCQoUtGqtW8J7gcCQMFZomvb3FPyKO5/fU+t7vHG0YFhHAQqJpliMN47G8fD+RYZrgW+Ib8cT054QtaiLTVo9Z74gqWmaK48NxfN5aIqxe80iRwgkEPHVbk9Kh2bbEmh3w0aM2Wyp8qmvhyohAeopV7j0jGgKChA5a5bk82SH9cYQZMFVqbGUsmUhPNWHCnQGtbESHBwMhUKBS5cuISEhAcHBwaAc3bCDGIZh0NPTg/r6eigUCgQHi68+EVPGLEScSVzyaKzDOAoUEtSJ+G3BE2jqapJc4hqSGoWecBqqDsouV4SFBoMGVTNOqM9K2s2L9diI/dyAZ51mBwre3u3xeUHc6dDMho2cxvSFjfgUcg179jh7SHQ6UR4SSql0rzyZMKAR0oDxJnIK7/mbQW2sKBQKpKamQq/X49IlF/LSgxi1Wo0RI0ZAoRCXosTqYRSkFODfJ//tZKW7ggKFJpVB1NgmVb88PGv9r5i2AlcmXyn6fnb3VlDoyAtB9Cc9TsmtNBhQAF7TbgdNMZJ282I9Nk0qg+Sf10BNeBODN3d7Ql4QqR2a3Q0byapESxjU8GnAeBs5hff8yaA2VgCLd2XEiBEwmUwwe6Np2ABDqVRCpVKJ9ijtq9rnZJVTFCVJhE6r1uKeax6C8h1+ETMGDJqCDDihPmt3njes/8zpOVhZ/ih+eaHAKfflNe12fKP5QXLTNLGibPdc/xDWfrdWMKnUkYGa8CYWb+z2XHlB5txv6R8kFAqy7dDsTthIdiVaAsEGmja77YmRU3jPXwx6YwWwLLZBQUEICgry91QCGlYPw9ErQDOWnJc7xt2BXZW7BKuEYkNj8enPPkWwKhid8xp42xVQoJC2cCr+mfiGV61/hmbQW9mGBaMWYEPv38EAiDZHWpNbmT6bTWrsVmz7hfzUeOSlWHY1tR21WH94Pe/Pa6AnvEnBk92eGC/I19vPYMbC0di9mV9cy7ZDszthI9mVaAmEPrzVS2gwMSSMFYJrhPQwAMvC6spQAYCmrib80PADcnQ5otoV5MB72he2GijDEIQ1eBRNQa34W+K71iRXnVrntvdGbPsF211NqCoUyw4sA4BBl/AmFXd3e2K9IGERwZj7YJZTqCgiJgQzbrVPmJUaNgJ8oERLIMD7vYQGC8RYIQAQp4chVnfFNgfDVyJmrAaKI7G9UXi6+gFUZXYiZHyMx94bqZ9nsCW8MTTjc0E6KV6QMTk6UR2ak9KjJYWNAB8p0RKGNFJ7CXkSKhpoEGOFAMC7SZ6OORisiJlcuNJAoQCklURDlzfFKwur1M8zWBLe+NR7o+elySr1L9ULIqZDs0JB4epfpHPmwbDYho0AHyrR2uBOiTRh4CKll1BXe/uQChURBVsCAPFJnjEhMbxNDilQkhNXxcDXi4fFlQYKAJhbu9Fd2So4Rk6kNkQMNITUe73Rb0kI1gsihKMXRAxpkxIx98Esp2tHxIRwli37VIkWlsqjs7PycWHxYlx6/HFcWLwYZ2flw7Bnj1euTwg8xPYIOvtdMXZsWO1k2LChojPFRXJMz68QzwoBgHg9jN/n/B6Pf/m4z0SHuHbzinAVov9vNNQTLAaWWA0UseMI9rhW7wVadp5DaGacLCEhd7wgYkmblCgqbMTiKyVaUiI9NBHbI6j84BeC79uGigYLsnpW1qxZg5ycHERGRiIxMRE333wzTp06ZTeGYRg899xzSE5ORlhYGGbOnIkTJ6S3yyZ4BquHAcDJc2JriBSMLODsyqxVa70uHc+3m6c7TGh6+0e07DoHQLwGithxBHsCwXMl1QsiBTZsNCZHh2FjY1waPZqCAozevw8jtmxB8osvYsSWLRi9f5/XjAeXJdIAalevATMEpRgGO2J6CYVpotDVJqxjxYaKBhOyela+/PJLPPLII8jJyYHJZMJTTz2FgoIClJeXIzw8HACwfv16bNiwAW+99RbGjBmD559/HrNnz8apU6cQGRkp5/QIDohNBvUkB0NsgqaY3Xz7V9UIviwSYVnxojRQQlLFq8sS+gkUz5VUL4icyKlES0qkhy5iegmVJzYg1eBahkNsSGmgIKuxUlhYaPf6X//6FxITE/H999/jmmuuAcMw2LhxI5566iksWLAAALBlyxZotVq8/fbbePDBB+WcHoEDsYaIO2WoUhI0xezmAaDl4wqEZcWL0kAJ5O7EgYxYjxQVEYTqU82yGhJikmcDESmJsqREemjD10soKCoCe9Iq0R1kRupZ4YaugPiQ0kDBpzkrra0WN3FsbCwAoLKyEjU1NSiwcZ+GhITg2muvRVFREaex0t3dje7u/nJDg0GcrDtBPHKoH/KVFrMJmnGLMuwMFtG7+Y5edFe2itZAIUhHjHovE6bCu/88gY6W/jFiGgIOBaT2EiIl0v7H3yXBjr2EwqKicF/546jtNIJigI5QE9RdSt5ih8i4eAzLGO+z+foCnxkrDMNg2bJlmDFjBrKysgAANX1fXq1WazdWq9WiqqqK8zpr1qzBqlWr5J0sAQB/0zipuJOgKSW/hDVsvK3pwvZIGsjlxt7AlXovA+BwQxc6eu1zLFw1BBwKuJMo648SaUI/nqrHeuu5YdtL6HDNYdR2WkLzDAUUZzYhrzTB2r3dkbzFDwyq5FrAh8bKr3/9axw7dgyHDh1yes+xbw3DMLy9bJ588kksW7bM+tpgMGD48OHenSxBsGmc1IVHSoImq18SkhoFSq0CYzS5vD4V0R+/9ZamC1ePJK1aixVTVww4ITdvwOe5UkQF40hrL/S9/L2juBoCDgXc7SXElkhXP7rUUhJte74MJdKEfjxVj5XrueGog3VB14kvJtdjWnkswrv6l3FVVARuuPe3RGfFXX7zm99gx44d+OKLL3DZZZdZj+t0lrhbjUMyWV1dnZO3hSUkJAQajcbuH8G7sE3jHNU92Z1yxZE6Sdf7obJU8jhKQYGZqgPDMLxNFBmGgZFm0CiwULoD2yPJUdG3zliHZQeWYV/VPq/eb6AQlhUP3fKpiL8/G7G/HIv4+7NB35yO8y3ChijbEHCwwpjN6CguQesnn6KjuMRapSMlUdYRTUEBhr28ESqH56BKq8Uw1htDm4HKg8Dx7Zb/0l6oDpLjmgMEseqxNM/PRM7nBpcO1gVdJ7bnVaNwWg2+vLwehdNqcNVzjw1KQwWQ2bPCMAx+85vf4MMPP8SBAweQmppq935qaip0Oh327t2LSZMmAQB6enrw5ZdfYt26dXJOjcCDmKZxUnbKZtqMf1/4D1bgbpdj/3r6b7gnnbbuQIxxYajupjE6xNmmZg2Ysk4zstq9V4Ui1COJdbmuK1mHvOF5QzYkZOu5Mh4WWIxtECuZP9AQykdhenpFXYMvUVZTUIDIWbO4E3PLdwCFywHDJZsTkoG564DM+e59GDmuOYCQoh7LhmdY5H5u8OlgMRRQE9dt1cG6QjdF8rUHCrJ6Vh555BFs27YNb7/9NiIjI1FTU4Oamhp0dnYCsIR/li5ditWrV+PDDz9EWVkZ7r77bqjVatx+++1yTo3Ag9imcWJ3yqV1pTioOIx6VTNoniaJAGAGDY0pHOtK1sHct3MJ14SgvIvGYaMZ3Q6qtZ0McNhohr6XES3HLna+rnok1RhrUFonzls02HGnIeBggc1HcfSesPkoPTx5d44IJcqyJdJRN92I8GlT+w2V9+6yNyoAy+v37gQOrJPuEeG9pt5yvHyHtOsNQMSW+nKNk/u5IVYHazBvoGQ1Vl599VW0trZi5syZSEpKsv579913rWOeeOIJLF26FA8//DCmTJmC6upq7Nmzh2is+AkpTeMA11L49cZ60BSDf2jfBwUIdnVeeek+jKrRWb/QrMy6vpdBocGEQ+0mfNdh+e9egwn6XsYtmXUhxPZI8mYvJbmgaQbVp5px+nANqk81g6a9Gy4D5JPCD3TECLe1vP8+lFqtszQ/C0VBpdNJS5SlzRbvh4DhjwOrgb+MF29gCF6z71jhikEfEhJb6ss1zhfPDVYHyxeCnIGI7GEgV1AUheeeew7PPfecnFMhiETKTplPNyXqxlGgwlToOdeK1I5oXN4+Fu0KIz6K/gL/1zKTM3tdAQo0GDxYewtq2i1faEeZ9UaT89+TuzLrfIjtkSR2HBe+qDLyZoK0EHJK4QcyYvNR4n/zazS88jfvJcpWFTl7P7ho6/OI3LrVdQjH5TUZwFBtGZd6tfi5DjBY9VihUBBfSbAvnhs0bcbY9kS8rHsKl9CAnqQwJEZoh0yVIukNRLCD3SkLhYIiYkIQ3W1C49s/Or1nbu1Bk83xSABr8KioeytAIdEUC2Vzf3UPK7PuuPBGxIRgxq3e1/AQ2yPJ3WaNvqgyYhOkHZGrlNjXv6NAQKwgW3DKSAzzZi+hdv5QAyeFK4BxNwJCi5nYa0q9tweYaQYllU2oa+tCYmQopqbGQimzwStGPZavJFju5wZfOfWYux+AUjf4DRWAGCsEB0TtlG8ZDcOn52SbQ5pqpP1rH8qss7HhZQeWeb1ZI1st4PgwY6sFvOHK9XaCtFgCSQrfF0gRbgufNpU/UVYqEdxVktyI9IiIvaake7tPYZkeq3aWQ9/aZT2WFBWKZ+dlYm5Wkqz35lOPjYyLR95ifp0VOZ8bnpZTDxYoRkysJoAxGAyIiopCa2srKWP2IlxhBHanPEwTjIbNx2W7d/z92V7RSvEELg+ITq2z65EkBTNtxpz/zeFNwmN3XoU/L/TIpVt9qhkf/eWIy3E3PzZpQMrWBwqM2Yyzs/JdCreN3r/Pu3ootBnYmGVJfBXKW7Hl528A2bd4cE3KUhW09Liwh8YLFJbp8dC2UqdZsCbvq4smy26wAO4r2Hr7uUHTZmx+5F6Xoan7XnljQIrASVm/iWeFwInQTtl4VJrOilgYMFBFhQZEw0FPmjVyIaVawJNWB1ITpAnu4TfhNoXSUkr83l3iz3HlEbG7piUNvp8+M2HuWtkNFTPNYNXOct40XwrAqp3lmJ2p80lIyLE82REug8bbzw1PyqkHG8RYIfDC1zROihS+FChQAdVw0NMeSbbtCi50NIJiKDCU8G7Y0yqjoVxK7Gs0BQWAN/NRxJI535I466iJ4kSfRyRFRIiA75qaZIuh4gOdlZLKJrvQjyMMAH1rF0oqm3BVWpzs8xHClSS/t3qreVJOPdggxgpBMmIa20llsDUcdA6jBeOO4Gfx9cgPUBl3jPc8T6oFAPEJ0oOtlNhfCAq3yUnmfEvi7FcvWkqVnXDDI8Jes6oI5jY9Ss1tqNdokRCuxWTaLHvFSV0bv6Hizji58GUOiSfl1IMNYqwQJOOqsZ0Uwq/UISw7waOGg4EGXzVOeE80Ck4vwZ4xbzoZLJ5WC7AM1VJif8IKt/kchRKYuRxIzPCeR0ShxD5FN9aeet3nfbESI0O9Ok4OxEryp14xBfpTP3rctdmTcurBBjFWCG7B19hO8nWyE/yeTOtNhKpx2CqB3PMLcD72uDUk5G0FSk9Kib3VaZvgQ2w8ImivteSopEx3K8fEFxVrfExNjUVSVChqWrv40nyhi7KUMfsLsTkkr/3qbnS1GazHpHRttsWTcurBBjFWCG4TlhWP0Mw4dFe2gm7rgSIyGHRHL1o+OgtaRLdkZVRIQCTTehNX7QooUIjoiUGSIQ2Xos4CsOxa3a0W4CN1YgJCQlX46UwzKAZIHhuDYWNi7AwPR3G66Orh+Pr9CtmF5AgyoFB6LNjm775YSgWFZ+dl4qFtpXxpvnh2XqbbybXuVvjYIjY3xNZQATwLEblbTj3YIMYKwSMcG9sBFiOmq6IFHcV6dJU18p4bSMm03kJslc1jGb8HndYii4Itp3rtNzV2RodjiWVq4wQUnF7Styj0/07kEpIbCDBms+9zUfyIryrWhJiblYRXF0120lnReaiz4iohViye5oZ8seV1pOVMk2wkpU+bjrScaR4bWwMZYqwQRCFFIp5SUAhLj0FYegyPJP/gSqa1RWyVTfaIDAwb5f2kODHqtZWxx+xc/RRDIff8gr6R3MbjoffOICRUBWN7z8APD9FmlyEToW7KslX5+JlA6Ys1NysJszN1XlOw9WZCrJgcEiE8KTMWU049mCHGCsElQhLx1w2fJZjjwBUqGkzJtI74sxpHjHrtgf+cwn9z1tu5+pMMaYjoETac2pu78fHLR62vB2x4qHwHTzLqOmsyKttN2VHsje2mjJc3DgyDxdYoC0+wfB5jA6+B5ov+NmJRKiivlCeLTYgV6+0Qk0PiiqFQZiwHxFghCCKUcLfpf2+hQk/B1NZveHAtYlyhIl/gi4aBjvizGsdVvgwAdLX34oYvf4sfE4tRFVsGvaYC6l7pys8DMjxUvqNP+MwhJ8PQ3/SPGXujcDdlikLt6jWInDUrsENCXEaZLQ4GGiB/fxt/EIiiakOhzFgOFP6eAMG7mGkzDtccxq5zu3C45jDMHrR1F0q4G9mYjdmn70Fvm/1xdhGrOCKPyq1Y9lXtw5z/zcGS3Uuw/OByLNm9BHP+Nwf7qvbJfu+0SYmYc38WQiOC7I5HxITIuriLzZcJodWYWJOH+eW/wR2lz0LT6X447tB7Z0DTA6BjB222LN68+qgAClfAeLhEVDdl43ffyzFL78AaZUKCcayBVr7DeojtbwP0V6ixeLtizVec/a5Y1Dix3g4xnhohhkqZsRwQY2UQ4e0Fmi/hzjbHwfGhxuJqEWNoBl0VLTAerUNXRQsYDxc82+sVFe3H41/8zmnubPml3AZLxZE6HHr/DLrae63HQsODkHvLaFm9EO6o0ob3RCPnpxvQpWrnNEpd0d7cDf2ZFsnn+ZyqIhdqr5amf6aTRaIuJ7brss8RNMps6TfQYLOhyU/Jx4aZG5Cotv871aq1spYty8GZ4iKU7vpY1Fix3g4xnhohhkqZsRyQMNAgQQ59BL5EOrE5DvozLZxy/dxJt8GInpfmVtKt4/VGIBj/Uv0J/9C+jyLNUes4X5Rf8iW4dnX0YvfmE6AUlCiDxR29EzH5Mo6w2i/sXw37M5LCgOgz1M5f5WKLKowWN05k12Wf49Ios4W7K7O3+9v4AykeECneDrEemJDwSHR39Ludh1qZsRwQY2UQIJc+Al8inaschzgVhVAK6KxoBpMebZdM21nWwKl8a27tQeO2k4hblCHJYOG7XpwpGk9X34/nsdnJYJGr/FJMguuh984gdWKCoOHBWXosIqFVTL4MFxQohJkicPiyXciou8qlIerIgOgzJNDMj2YU0PdkoIOOgToxB0rdZzDX1gh2U1ZPuULGyXqASKPM1Tme9sXyN1I8IFK8HWI9MPOWLYeCUjiVGXtD62WoQoyVQYBc+gh8CXfGIAPn+KQgCtlhSoSxC/FX1aj5od7qMWFoBi07KwTv2bLzHEIz40RVCwldTwEKNBg8WHsLvo38AbRDA0E5yi/FJLgKeZwAcaXHQgYLq157YNspdHX08o7jJKoXk++IQmbPJHQYuhEWGYx9/yqHUUCheMD0GUqZbkkqNehhGyKp6LoSBw33ooPuM5Dfo6Ge9BRGffdPJDb84HE3ZZ9rtbjqsCzynIGuMSPWAzL5hv9D+rTpoo0IsfL3wzOznc7n0noJjdQg8+o8jJ4yjRguLiDGyiBALn0ENuFu2YFl1nABAOg1FWgPbkZ4T7Q1ZJAURCFH7fxFs/WYUGEql9L85tZudFe2IjQtGgzNCJY8d55rFryeAhQSTbEYbxyN4+H2Hg85yi/FhkP4xnnimXEMG925Zjr+vbLILm/GFX+c/QxGpNqXi17zyzGDo8+QQmmpfnnvLqBPH7Wi60oUtjzhNNTYSaFs/H2Y+NN2xJ09YD0utZuyX7RaeIwybri7Mg8GjRmxHpDg0FB8s/2/+GFfITqa+wUs+QTj3JW/59N66WozoHTXxyjd9bHbkvxDBZJgOwiQUx+BK+GOoRicGPu5XWZDdpjly0lR3AtXy85zMBvE9RCi23rQWdaAmnUlaNh8HE3vnELD5uOoWVeCzjLLrmRf1T78ef8fRV0v1tQv6U+Bgk6tk6X8srW2U9Q4vrCJFM+MLRVH6rB1ZRE++ssR7H2jHB/95QjefuZbjJkmPpk3IiYEl41x7rnCemrCo0Ocxg+osmXAUqZ761ZAkwSaUeCg4d6+N7j+ZilUZC/CZf96C8kvvogRW7Zg9P59kgyV6keXOlUWsVothj17PPssfLBGGQA+gT+79xy6Mntz3t6sTJQK6wFxxbcfvIui9/9jZ6gA/YJxZ4qdE65Z+XvH60fGxXMKzInNnxG6J4F4VgYFcusj8CXcnf+hEQffPYPQ9p7+0A8P5tZumNvFGSumhk4Y9l3guIbFS/PTnF4su7AMWebRoq7XpGoFIG/5JU0zOHHIdWJjeHQwb9jEHc+MUNjo2P5qUdcDhD0kaZMSkToxYXA0OOxr+qc/eAgd/xVePNubu2GIzcSwq6ZJugVjNvtXq4U1ylzqrNh3ZfbmvIWEJH1RUeQN8TaAXzDOlfy9bVjJ2NIsqYLIXUn+wQ4xVgYBfOEawHsLNFfCHbuIXfrsPHDwJ9fXCA+CMipYMHSjjApGe4le8DphnxtBpQEn1GdRr2pGnCkaCo5dJA0GDapmnFDL1zCQRYxXBAAyr07mXeSlembEhI3EMHx8LFInJqD6VDOvMaJQULx5NgMOhRId6rEAyl0OdafSyfjd96K1WsKnTZV8fVE4dmIWoWDrrXn7s3OzLXwNAKUgJBjHJ3/PlZvirXsOZYixMkhgwzVcuxm5FmgAqPyhHmUHqyGmNsLSEyiNs3qHRZ2jQxuHV8WWuN4oax7KP7Tv4+nq+0GDsTNYGFhyVoLmarEmea3s5ZdiF7XoRDXn8YojdSj5pNLl+bYJrWINJFeoNUHYurJo8HZb5ugFJLaCyZ1KJ7EaLLJrtUjsxOyNefu7c7Mjth6QqrIfUPzBu5Kv4SpZ19aL0qK/hKL3/+PudK20NTXi4oljpGrIBmKsDCJ8rY9gG4LI1KgQSvHnrCijQqwJsnGLMnibGzImcToXbB5KkeYonsdm/Kp2IRJM/Tv/3nAaST8bj8uy4pHt7geUgCeLnxQPiW24xiv6JhRw6hvnSrIBKafPBU8voKSCdQiPjpOlh5NYDZZA02rxxrwDoXOzI6wHxN2ePBHRMbzVQp56Ufg4sHUzOg39VZck+ZYYK4MOX+kjOC6wxzvNyFErwTAMp8ESPW+UtZJHqLlhV0WLqPuzeSgA8E3kD6iiO5BtHINQCjgXeQZLf7Yco5J919XZkwaGYj0kOfNG2hkO3tA3UQUpYOrhNxDF6MIELAK9gBTb78LV0/+Dwl1hvKe7W+mknnIFVDodTLW1A0qrxRvzDpTOzVy405MnMi4enQYDNj9yr51BEhEbj3G51+C7nR94c4pWbA0VwL0O0YMNUg1EcAvHBVbfy+Cw0Ywux2dceBCn0Bvb3FB9eSJC0/qF40JSo6CMCha8d2NQK8rVFn2V1MYJuKP0Wcw7+WuMrCqA7nwBJp2+E9H6EZ5/SIivaGAF2YTgW/zcDSGxBpK7JI+JFjRUgAEkp++IiF5AaWd/j7n3Z3pU6cSYzegoLkHrJ5+io7gEjNkMSqmEduWTlgGOhrsbWi2+whvzDqTOzY4MyxiPMI20pp1jp1+DnRvXOnlO2psaZDNUhPhiy+ugfVhVFUgQzwrBLbgWWH0vA32vyapg28UAkxeMxmUSFGkpBeUyr6XzOjXoCwxGNU7E7NP3OL0f1h2JPZvLoVAoPAphSK1oYMt8HdVnI2JCMONW/vwPd0NI7irWssQmh+PS6RaX4waEnL4jInsBpcWeQerqGW5VOrnUI3l5o/P7ErVafI2n85ZamWjqNeHIJ1+g7VINIpN1mHRTHlRB8ixLCoUSGTPyRPcLuvKW21D2+V6vzyPzmutg6u7G+WOl6OnsT6oP02icPCqODOXkW2KsENxCaIFtNPU/pMKjQiVfOywrXjCv5bKseLxUuQFHN7YD4GqmaHntbgiDphl8cmg//nV4G5RBkaA0dWD6FHBdVTS4U+brOoTEIFijQGJaJOf9uAwkMUTF84dAbBkQcvqOiJWdb691q9KJ1SNxDJeweiR4eSM0BQWInDVrwCnBejJvKZWJX/7zXaj+vhGxxhZE9I0p/lM0TA8vxbX3/UKOj4bRU6aJMlbCNFG4bNx4fLv9v16fw8mDB8Aw/R7NkPBIXHHDfERpdfjslZdcnu9u7s1AhxgrBE7MtNmaqBsbGguKotDY2Yj40HjoDGnobO1FaHiQoKS7J1LsQnktAJDZcwVOdx8RvIYraXvbz2ivHXMaHS0K5OMuy3WCm/H1yA9QGXdMVEWD1MVPyEPCPux36v6Jdz/8M6dXx9FAUkcEY9+Wky7zZ7JmXoaj+y4KGklBwT2oqdgJ7ahfQhUkHJ4LBPp/pxeQEBqCyV3dEFxi3ZCnl6pHIlt5sox4Mm8xlYlf/vNdJLz4nNO50cYWUC8+hy8BWQwWMXL5ADDr3odgNLQKjnEXW0MFALo72lD0/n8wfeEdos53J/dmMECMFYITXOEPwJIfknt+ASJ62kVdx1MpdjavhQtPpe25PuOk9msw7fgCOCp/hvdEo+D0EuwZ86bVYPF2RQOfh6Q9uAVFfYYSZaR4vTqOBpKr8NCMW9OhUin4x/UtxGNLt0C95weUaNaBfvQezLjjcQ8/qXw4/U6TtNCaTFjR2Ix8YycYGjDWB8PUpYQqlIY6LQ5UivRkxYDQUQlwnCoTQ2MthqOhHqYzB6D6+0YAzhq7CgA0AOXfN8K0+Oduh4TMNIOSyibUtXUhMTIUU1NjoVRQosTipsxbgLFXzsDFE8fcure7HNtfiNCICHS18z9fQyMiRXeIHmwQY4VgB5+gU2rjBBScXmJ3zDY3xTb04ypHwxt4UirM9RkphsL4U9eBgfMDlHVnTz+/AOdjj1tDQq4qGhz79bgKB6VNSsSI7Fjc+eYD6G4zwxhkgF5TYb2fFJ0KsfkzfONCupuRfna7pZkfgCgDDepPb+AQEJAGC68QmVKJZYnx+HtJK7TfhMHU2f8zUx2LgnbCfsn5IwGjoxLgWCsTy3cAH91jzSHqrg1GrJE/j00BIM7YgiOffIGcn82WfN/CMj1W7SiDorYSarMRRqUatDYVz87PwtysJF6xuDCNBvlLHsaYq2YAEO+F8RbtTY0IDuPWYbLCIw0xFCDGCsEKn6ATxVDIPb/A8v+gnLsrw2KwYJoOYePjfSLF7m6pMN9nTDKkIaKH371KgUJkTwySDGm4FGVRxBWqaKg4UudkAIgRWjvacAQnQg4DPLaYFK+O2PwZdtxPP9bj2GOPI6a1BTEtZ0HZ/IzYHa/ir2/BdOtvAyokJChERlGY9iON2M8jYHJ439RksMsvEctA1VHxCxzl46YucTk7bZcEvFc8FJbp8cJr2zGn8RAizR3916oPxwv6GcCDt1gNFiG5fMB7kv1S6Ok0Cr7f1WYYsgm2pHR5ECO1kRifoBO7kLOGSo5aiVAHWyQEDEJLahDba/aJJoeYUuHRUxKd5sL3GdW94koa1b0al80QWbE8R0OKFVqrOFLHe31v61Sw4aExOToMGxvD+7tRKCg0VBUireowYlvO2Bkq1jEAYlrNOLbvHfs3aDNQeRA4vt3yXx+XVtr+TimaQWYVjdwTNDKraChMNBbvY3MEHD57X6irdvUaMGbxc2b1SPh3uQxU4YBa7bpX1KCGp3xcFSruZx2ZrLN7baYZfFPRiI+PVuObikaYacbp/c3//hjX1+1GhI2hAgAR5g5cX7cbm//9sfU8ViwuI/daDB8/AQqFEjRtxsUTx3Dy6y9x8cQxMDSN0AjnxPbQiEhMvuH/RH0Ob0MSbAmDCncaifEtgLYLOV93ZYqyLG8tO88hNDPOmgjrLbhCKmmTEnH57OE4uvci5zlH916EblSUnSeD7zMag4RLBvvHtQHg77UkRo1WqErJnzoVbfoLEFMf1Ka3aYfAoxCLuevsmuTJCfs7nXqKxt17acS39b/XGgZECbVcciO/hNUjqX50KdcFAQDay5tB/e9uQLnVZz+HgIOnfFyd0ANVmBmmTgW4OkPTAJrV0bjypjzrscIyPVbtLIe+tct6LCkqFM/Oy8TcrCQAQHFFA7IvfgFwXJWC5TeTffEAiit+junpzt8fKWq0Xe1tCFG7CNlIREzpMjB0E2yJZ2UQwsbvHT0IbNntvqp9nOfxLYDsQh6nohCmoHgl9SlYuit3V3o3i77iSB22rizCR385gr1vlOOjvxzB1pVFOPt9Hc4c5vdSABbDgLbZgfF9Rr2mAu3BzZyhBMASfulUtYPWtQs2YhOjRisktMbqVDiXY1tw5dXxhMgkcUJ61nGsi99xQTLoLcfLd3h5htwkqBMw9RSN331AI67N/r1Icb0hJeeXaAoKMGzjBqjC7Y+r1GYMy22GZnjfjQtX+NzTFDDwlI9TCkA7mX1G2H/faPQ9Rx5eak2uLSzT46FtpXaGCgDUtHbhoW2lKCyzND6tKj+OSHMHzzfHct1Iczuqyo87vXemuAg7NqyWlJ9yZPenoseKIX/Jw4iIFdakioyLH7IJtsRYGWS4aiQGAOtK1nGGhPgWSnYhDxHpLGk43WxnILgDG8J6v7CQN6Sye7PzcUccDQO+z8hQDL4eaVGk5BazAsJMEfh72lbBppCeVimxOhWWezp4r7zUQZuPCfm/RLNGAT5NWxpAc5QSE/J/KUohVspCzaUEK5ZJcRNxb5/9zVVdIgZ38ks0Y8Ix+sZLGJHXgOSrmjEirwGjb6qDZji7qFqE51BVJPnagwKBsnDN8C4My22GKsz+r61ZHY36x5+zli2baQardpYL/ZVh1c5ymGkG4WbhfA8Wx3E0bcbnb70m6lxbutrEeWMdoSj7v8rIuHjMX7YSY66agevufkDw3LzFDwzZhoYkDDTIkNJIbHLiZCedES5BJ3YhTzl3r6g5HPr0PLq+vOR21142hFXXUYc7Sp9FOIJ4PQ1isDUMhESrqmLL0K3qQKgpnOMqlvsXba9A2iQtb+6HN7r5+quDtiooGPSj94D60xuWZFqb99gdL/3buy3JtZUHRSnEoqrIZedfl0qwLuguPYoYg7gGmE540qenvRaUAgjX9rgcNyRJmW4JCfL8nURc1oXmmBBciFiA9qDhSBqXhSvnz7IrVy6pbHLyqNjCANC3dqGksgkTxoyAmHagE8bYexCLP3gP7U2NYj6RV2AYGjPvug/q6BinxF6+SqXIuHjkLSaNDP3O3//+d7zwwgvQ6/UYP348Nm7ciKuvFt/anNCP2MTLLy58gScPPsmZ08K1UFbGHcN/mTcxqfY+qCkFZyiIYRh0smXMbnbttS1BTTaMFqzQEYujYcBnDGT2TEGoKcLxdDtcCc150tDQcY6+7KDNMuOOx3EIgOLlf9kZAK1RStC/vbu/bFmCQqwQYpRgXampul0i7GmfHrGCcm4Izw0KFEqgYA2wfbHTW2cMcfi8Ng3tphAAZwGcRc1PxxFzWaTdglzXxm+o2FLX1oVpE8ZDFRmD3rZmzq0NAyBIE4MRmf1hlDPFRSh6/z/SPpcNRkUowuguyVspdXQMMnKv5XxPTKXSUMTvxsq7776LpUuX4u9//ztyc3Px2muv4frrr0d5eTlGjPBOM7qhhNjEy3+f/LfTMVsp+d0/382pYNv9UwjUu0xOeiRM32JT1mnvvpciee8YwhJboSMEn2HAZQxEVl2G/aX8PYlYhEI9Yvr1iBXL81UHbUdm3PE4TLf+Fsf2vYM2/QVEJo3A1HwHBVsvLNRilGD1zzyL2j+vtnQC7kOl00G7YjmUMbEw1dfD1CAuz0AZYoa520ZnxdM+PVbPgR7c4TBYEjQ6fLdrDzjC45wOnTHEYUd1htNxrs7CiZHi2nUkRoZCoVDihvsfwo4Nq52fT32vb7jvIeuibwn/vC7xA/Vfr5MKQXVIEkZ3VnLqMwnhKkmWrVQi9ON3Y2XDhg249957cd999wEANm7ciN27d+PVV1/FmjVr/Dy7gYeYRmIURYFmnN3mjqJjnAvlKKAztsGpb08nYzFU9L3293TlibDFMYQltkJHCCHDwNEYqG4VVxLoKtTjbkNDT2DMZu/1oKHNUP1UjMmXqYFx11oWZcddncuFmrK8L6AQ21Fy2KUSLN3S4pRDY6qpQfXSx+wPKhQAzRcKYqBSm5F2Qx06G0NgouKguutNqHOmuvwZcbVksHq3FEpL1dN7dwl8BhrYfjegGKJVQQ6eNZoBPq9N63vF/b38YsvrSMuZBoVCiampsUiKCkVNaxffXxl0URaFWsA2jPKaXWgnMi4e1zmEUapPnnBL8I2dh5rpRnpnpeTzwzRRQzZJ1hP8aqz09PTg+++/x4oVK+yOFxQUoKhoiCaleYirRmIMGKsXhAsxomNs356KwkqUfVblpGDriNik09oO+wcbm9gb3hPNm7MSEROC3FtG49D7Zz02DLwVwgHca2joLp7mfNghthTZbqFmC0NZ+j7j3LXORo7NnPV/eEba3IQQMFQAQDvJAIUKCNd2A7gEaE2AC0NFVPl/5nxg4VvA9nsshgkfhSuAcTfy/jwGLQ6etWpjVF/ohx/bzsJKBYVn52XioW2lfH9leHZeJpQ23yuxYRRv65Wwc3P1DZ9170NDPqTjDn6tBmpoaIDZbIZWa/8HrdVqUcOz4+ru7obBYLD7R7CHzclIVNsv1Fq1Fndm3CnqGq5yXygFhbC0GFT3MoKGCiA+6bS52/7h4apCB7B4TkZfocVdq6fj5scmYfa9mbj5sUm488/TJXswxAjNSel3JFaQzRPYnA9HDwWb82HYs0f8xaSWImfOB27dCmiS7I9rki3HeTwJ7JzpVhkaxTn8jPtLiR1yH1zk0kgq/1fHCRsqQ7kqiPXA9S3h7SZxyse2hsTcrCS8umgydA4d3HVRoXh10WSrzootXIJvjkjVK1GEqtHdt7/n+iaL+XazfYcI0vF7GAhwFhhjGIZXy2PNmjVYtWqVL6Y1oOFL0CytK+XMV3FETO6LNz0RNM0grDYOoxsm2/XEqYw7hj1j3uxroNj/cHH0nEjtdMyHP0I47iK1+68gLkuRKW7vQOZ8y7GqIosBEKHlDhuJmbM3oBkkXt4KVRgNVagZ6oQeUFxbMoFcGlfl/079mbyUbDwocfDARahcVE714WhIzM1KwuxMHWdzQneR2vuH7jLydcGwwjsbisJNv/k9xuZeI2WKBBv8aqzEx8dDqVQ6eVHq6uqcvC0sTz75JJYtW2Z9bTAYMHz4cFnnOVDhStAUk9OiVWtFiY55K5m0v49OKPJhqRxoD27G133dhivjjuF87HEkGdKg7tXg19N/hbxpV8om6+/LEI4neLX7L4/aqM3F+EuRFUqX5cmi52x7PzfL1VWxUYhKdD+XRkr5f44uh1QFuYL1wBUuxzDmEiJU3X0eFu7fL5/wmVJB4ao054Rdd/Fp7x+GgTo6Wv77DGL8GgYKDg7GFVdcgb1799od37t3L6ZP536YhISEQKPR2P0jiMcd0TGhHkOsJyI82n7PERETIqpsma+PTnhPNApOL0FqoyUjnqEYXIo6i/YRlzBz2lTZDQdfhHA8xavdf33kHRA7ZyqIhiLYDN4qGwFUM1lhLS7RdQjm0gBu9GdyCHU4QwGaYYIG0qAncz6wtAyKuz/BdTfPhZAh6kvhMzYh15VyrDdo86GWy2DE72GgZcuW4c4778SUKVNw1VVX4fXXX8eFCxfwq1/9yt9TG5SYaTOiQqKwKGMRPjn3iV2eCCs6dt3wWag+1YwOQzd+7CzDX2vWobazxm6cbZKhu54ImmbwxbYfOd9jk4GvOfcLnI89bn22yaHeyvYdam/pRmdbD8IigxARHRqQ3hRbvNr910feAbFzviy3GXSvAtVfx8DZy8LjdWEF3n7+WyArjSdReK3LqhzJ/Zk8TDZ2CW0WHWYLaPo8cOmpV2P+iKsCRvjMNiH3dHERju7+RJb7dBpkyNEaQvjdWPnFL36BxsZG/PGPf4Rer0dWVhZ27dqFlJQUf09t0MFV3RATEoObRt2EvBF5mJw4Ged/aMTWV4tsPB0KzA7+Fb5O+RDdQR1Q92pgDGrD7774HV7Ke8lqsLiTM1J9uhndHSbe9ylQCDNFIKl1NOjkNo/VW7maIVb+UO+Un8ISHh3itgqvL2C7/5pqa7lzQKSos3qhFNlrc1YzCE/syzXJbUZtaRRMnY6Ls4PB4ijwJjGXxha3QqU2oQ53DCReAqBRpBy4qtihabNPRdFsdU3kMlbCNFE+/1yDCYoRqmMdABgMBkRFRaG1tZWEhASwVYa1hQ39bJi5AalNEzjzT9hzbMNG7cHNODH2c/zrob+67eko/rgC331W5XJc9Fglrr4+C5eNiQUD2i1V1/68mH6jJEStQreR31hikarC60usCrCA/eLft3gPe3mj+PJlthrIcjGbN/p+7wIVPlZEeAFczvn3i6C5sM56mKEBY30wTF1KqELNMHUrUHfE3oBxu1SbB/b7AthXotl+XzgNZ296Qay/D8dHtITfxwCEq/txsCYGsfm3YtSU6byJtd4wBGjajM2P3OuW/oorpi+8Hcf277G7dkRsPK67e+jK6EtZv4mxMgQw02bM+d8c3qRBChS0YTrcUfoMOlq4s/XZKog4FYVQCuhiGDSYGKTfGoY517n3Rft2RwW+3+XaWGFRRVpKmY9EfGU95qR7wQGbF+MuETEhuPPP0wM2JCS/zsowcd4BCV4Al3Mu3wF89Cugp4PzVgwNGLW/RO/wm2BuaoIqNtbqRXJbDM8BLk+kTq2TtT+TFdoMbMwSSHru83QtPT4wQ0I8sN2PHWEXqc8S58CYnIln52XalSxzGTjuGgJ8c/CEkPAIdHe0875vq9o7lCDGCsGOwzWHsWT3ErtjFENZq2uMQQaAoTD/5K95r5EURCE7TIkwmwW7k2ZwgjFh/ro8txbyn0424eOXj4oez+5w94x5E5Vxxyyfg2OnaxvuCYsMxr5/lcPYKq5kko+bH5vkldJoufC2gq1k74AbXgDBObtYrBkaaKhIRtPZKDu9Fm97WAQVbOWk8iCw5SbX4xZ/IroSK9Bx5dVgALQrI7B1+B1gKIVVY8WVceGOIXCmuAh7Xt+ErvY2SefxERymRk8nf1foyLh43PfKG0MuJCRl/fZ7zgpBfhyrG1IbJzjplnQp+a3+pCAKOWrnL1EoBVxBqXBpbxUumzNS8rySx8aIDsUA/Um3V5+7FVUxZaAVtJPuxfkfGnlzUDxBrAqvv6CUStflyWKRUIoMwG2NFsE5C5RSGy6GQn84CnQPANgnLdo2QPSGweKP/kxmmkFFxVmMETN4EGm3uJK/pwBEmtuR1KXHpbBhWLWzHLPGJbjs72Mr3y+WtJxpUL31mujxrhAyVAB71V4CN34tXSb4BtvqhtTGCSg4vQThPdF2Y0LM4bznZ4dZvuSOQn3sa9PX1Thdokf1qWbQtHhHnUJBIe/OcaLHAxaDRW2KxJ3f/7G/rLlP92LfgWLOMmhvIFaF11cwZjM6ikvQ+smn6CguAWM2uz5JLqRotIiFZxE2XAxF9dcxoHt4Hl19juLa1Wv8+zNxk8IyPWas+xzPfC4yZ8KhOstMM/imohEfH63GNxWNMEv4PvobsfL3arMRDAB9axf2f/Gty/wS1hCQgsVw8m2psbfl/wcbxLMyBGCrG+o76pF7fgEAfo0VR+JUlF3oxxGKoqDqofHt1h/RaGIkV9CwOi1fvXNaUqgm1BSBgtNLrCEhiqFQ+Vkn3BUSE0KsCq+v8FaOitdCR3JotHCUSDM0UFsa1fdK4PfcJ4bXfrgEkVdeJf6efqawTI+HtpWCAVCLcbjExEKHJscOAv1QCsDYaHf+qp3l0Lf2txZIigp1yu8IVMTK3xuVauv/N9SJ08SRagj4w3CQKv8/1CCelSEAKwSnM6QhoieG1zDhIlTkUHZcR0s3Cl8rQ8WROs5xNM2g+lQzTh+usXpi0iYlYvGaXNz82CQkXxMk6n7sZ5h+foE1/8bcJk8CrJR+QHLjrV5Ahj17cHZWPi4sXoxLjz+OC4sX4+ysfGm9hFjk0GjhEFoz1gf3VQCJ+108/+nv7Hv4BDBmmsGqneXWQBoNBVb1WiqzeJ0jDA28fzdQvsNq6NgaKgBQ09qFh7aVorBML9vcvQUrf88HA6BNGYFLof2GV3yiOE0cqYaAtw2H0EjhfAw+1V5CP8RYGSLkp+TjwdEPixobEt7vcOsS6UV2HHfovTNOIaGKI3XYurIIH/3lCPa+UY6P/nIEW1d+jd2fF6Hw/Ge4FHUWqpxWtAc38zYutIUChcieGCQZRiOJGiFuohwEhXB7E8Sq8PoKl72AIC784dXmh4A8Cq6s0Bp7PgBTlzSvT1WQwdJ08PBfgePbLUmrtMjQEG22jJd6npuUVDY5GRq76al4uPe3YFwYZ0zhCvxpx3HejCEAWLWzPOBDQqz8PRfszA/G5YKhFKBg8RrNyrvSpfqsO4bAsIzxCI2IlHSO0P1n3yv87PWlau9AhYSBhhDT0q7ARzjictzc+7JAKSh0GLqhjggG894poNPE+chkGAadDJw6L7c3d0N/psVaQcNXPtze0o0z7wF7xvwHlXHHEBMSg+iRw1Fweok1edYV6l4NFuTMw0VpYWlQlGWN7+22LETKIArJ6dEYk6NDZGzgKdh6oxeQV5sfsnio4MobjnIQWlOFijMYGACNkUD5cAAMjXXHXkXexUtQAuIE1fwgxFbX1sV5vAUaKCkhI4MBZajG8J4fUI1MnhGW/I6Syibe3jpmmvFqk0B3YeXvHcuQ25UROBiXi4rwUdYnwrPzMhGkUrns7+OuIUCbxSX+uyJvscUAC42IdKouCo3UoOD+Xw/JsmWpEGNlCCG2S3KyQy+czp+no3HbSaexbNV7WSf3IsJW0NA0g4PvnuEc4yir39zdjOa4ZuwZ8yauOXcrwkyudzf35CzCTTNmYeuuIpefbdZdGagsa8Cx/T85rdfmXgYXy5tRV9WGvEXjAspQAbzTC8irzQ9tcVPB1WX+jY0SrbpVD9XxjTA1tvB2bWaPvjVbAabv91ejUqE0NAQ5Xd0Whd737gLz87dgNCY7G0h8Jdh958klxJYYGcp9HC3izhcxjs8gkjPXxR2hNlt126Lj5/CfYy04bo4D09c+W+cwNz4DxxP5/uqTJ9DT2SnpHEdjhL0/AF5jqqvNIHluQxVirAwh3O2SHJYVj7hFGWjZWQGzTRJsJ2MxVPS93AtHS52lXE9/pkXQiGBl9Sf9NBulwy0hiMq4Y7gQcwKLvl+FUFMEr4clPCYEN82YLvqzJY+Nwb4tzoaXLd0dJhS+VhZQISDAO72AvNr80BGJEvdWJVsHw8Op/LivlJoCoH0mul/9loO2MOD16xUoGWsf4a63eokYGC6GofbuJ2Gy0ZtT6XTQPrkcmhPSS7C9wdTUWCRFhaKmtcvu7nWIFnW+8zgaSnUlKFUbGFMkzMZUToPINqnXFjbXhdUycQdPhNpY+ftfjJ+AW2517fVxJd9vixgDSmqCbUzuBNz96z85XRcANj9yr+C57pRWD0WIsTLEYKtvHLVIImJCMONW/iqesKx4hGbGobuyFSZDD/a/exo/GXoF71V+8BKmXJ+Kc8fELXzZ+mtx5LK9YPrc3powDb4a9Z5gSOhqG+NKzGerPtUsurT50HtnkDoxIWA8LN7oBeTV5odciNRocTccpSkoAH6/CLWb3rKT2zeEAp/lUPhger9HxZaEvjweS+lzNBx7C1kMpMeA3CZohvPOur8E28tCbEoFhWfnZeKhbaV2gbQS2lVVEAVGk4yLXRNBGXrBAFBFliFEuxOKoH4NGsocjTblMwBmW485JvXawv50Vu0sx+xMneSQEJ9QW3tTA3ZsWC1JqE2poHjDV7bY9vcRmpcYA0pqgu3wSZM473/xxDHRpdVEY0UYYqwMQdztkkwpKISmRQMAkqs78NMnlYLjO1p6UH26GaeLxZWshpkjkGRIw6WoswCAJ3KegDZci/NHG9HyeQh6DP2PVT7jytVna2/hdoVz4Zh3428opRLalU9aPAtswo31TYdGfjx4tfmhB7gdjqLN0LT8G5HzamGsD0ZPlxJPjojBNykK0ErnegGKYaA1mzG5q1u49JlNUD6iQeSwLlBCpQcyCbHNzUrCq4sm24VkaCjw16D7sMb0AjtRmzMsn4GauxZ/oLPx0LZSqCLLEDpsm9O1GWULHv/yd9hA9Ss9cyX12p0D17kuXNC0WRahNk+RYkANyxiPkIhIdItQsO0OYTDzqv/jfE+sh4ZorLiGGCtDFHe6JNsSpQ0TNe7SqWZ0tQt7YGxJac6yGivacC1ydDnImQvQBc4dk/mMK77PVnGkDofePyt6LgDQ1izeuPEFmoIC4OWNznkeWq0onRVvGDzewO1wVJ8AHaUAwrU9CAdwixooUsSDYhgwNsKFVN9nW97YDCWADmvps8D9jCoY64MRrhXQ/JFSgi2RuVlJmJ2pcwh73ADqx2zBfKC5AP52x0SsOLwWNKy/SidYpWelQsmbw+KI2HFsm4bqsqMB502QakApFEqkZE3E6W8Pubz2iKuvRJAqmPM9sR4aorHiGmKsENxCrKLrudZKSKmQn6CfidrIShiH12Jy4mTrcYWCQlJ6tNVg0Z9p4TRYGJpBd2Ur6LYeKCKDEZIaBUpBud3M8Kt3TiMoRBlQuSuaggJEzprltqCbpwaPN3A7HMXh1cg3dmJDXQPWxsWgVtX/SNOazVje2Ix8oyVRUmzpM/+4vuaBUkqw3YAz7CEiHyghQQ9G2cJbP8cqPZfWlSJHl8Ob1OuIqHE2FVTtrQkAXCtT+9Kb4ErKH7AYUN+8/zZGZE1E0thxqDr+g6hrTx43wxLu4ciBYbVjhO5NNFbEQYwVgluIqSxSRTJ4q/lVzMcjkq49/fzPMPlnUXYN4yqO1Dnlojiq5XaWNTglASvCVdDMS+OtRnJFb5c5IJNtrX112KaD5R+KbzoIzw0eT3E7HMXj1cg3diLP2InS0BDUK5VIyP4lJn/7L9h+GrGlz6pQGu6UYMuOi3wgxx5grsbxJfWyULBU3kxNjRW+oEMFVYRKnBK1L70JYg2jbz94F99+8C7CNBp0d4hrYvjFls12VT22OTCsdowcpdVDDSIKR3ALtvpGiK9TPoA+6oxokTfAUhkU0RODzJ7+RYr1ijgaRrZquZ1lDWjcdtLOUAEAusOE5ndOIaVLfCiKCy6RO79TvsPSmXjLTcD/7rX8d2OW5bgIWIMn6qYbET5tqs8MFfbe2pVP9r1w8AUIhaMEBOiUAHK6enCDMgY5BS9CeetWQNNfyaJO6IGKvwWWxUDS6aB++HW78wBY7ilT2bK3sO0BJmYcm9QLOP80bbVMBJNrOZpYDlO3IkLVDe6qKgu+9iZINYw6DeJKihkw6Gyzb6bJ5sCcKbb0wmJLqx3F6yLj4t3qCD1UoRiGR7BggCClxfRgxNct7GnaPneks70Hh94/y+lhaQ9uxtcjP0BiWwou18+SJPM/+95MjMnRgaYZbF3pQj8lOhizNUGgDdw7OvZP/LCRv8xaDDc/Nilgkm159UDYn7HMC6u3+gq51efI+tkBTu+H7WdnPU99oRPD6Q5UL13Wd6pzvs4wtlza4Tyrx4rveABgps2Y8785qDPWcW4OKFDQqrUo/Hmh3TPCI52VyoMWI9mBM4Y47KjOsN7ZEV8v0jRtxuZH7nUZCpKKkHBlZFw87nvlDavXxB3NmcGOlPWbhIEGMPuq9mFtyVrUGvvj+Fq1FiumrrBm/HsTvlBM+pREHN130Wl8eE80Ck4vcetebE6MK40WAAhp7wUtsItju0NPCFNC3+u+KiUrcud3OHaz/cirBwJ4r5Ei4GY4SooAnUPoRJMK4GWF63wdrpCLH5RtpcD2AFt2YJlVbJGFXVCXT13utJnhTuoVqWDLUxmVrmnEfJzE57VpaDf157d5ItTmCQqFEjMX34+df1kDwHvtToU2YI5JxGJKqwn8EGNlgLKvah+WHVjmtIOqM9Zh2YFl2DBzg1cNFr4E1Y6Wbk5DBYDdA1OKV8W2y7EYA0F0s0UFhTgV5dQaQCxik4plp68ihh/59EBEC7lxzYrHG8NQQFNEKNpNEYiICEUYJWIxkShAZ4tbBpKflG2lkp+Sjw0zN3BuYpZPXc77TBCrZeKEQGVUuqYRaZGNqDZGoX36U4gYc5VfvQlNCePwWeIcXN14CJHmDtcneAFSkuw9iLEyADHTZqwtWcvp6mXdkmyJIgCPwkQ0zeDSqWZ8se1Ht+YqxUhhsVXRbakxuhwvttkiIN6wccTWgPI7YnU+XIyT2g/Gk75CfN4Y4+0L8e2RErdUTsUK0HFhTVAWg589WVLJT8lH3vA834SH2Rwigx58OSpB4SpUjb4Rc8df5v37S6CurQsV4aNwTj0SyV16XNb5E6a2lsp6T1KS7D2IsTIAKa0rtds1OcKWKG4+thnbz2x3O0zEFfaRk4iYEOTeMhqh6iCcPlyD1tpOHP70vMvzGk0MEKIAummXYx0Nm9CIIIyZpkWIWoXDO/nvxdWGwG+I1fmwGefo1TgYmoxVu05JylNwV8iNzxvzU2cbSvd96pRgaxXpemwF0rWM//ND/OjJchelQokcXY78N7JpYsn0+VJZ2Hz053ruxO7//IBXFyk97jXEhxjDmy3BZigFqsOG4VJoEjLaTyHC3OF2WMhVzgopSfYexFgZgIgtUfzbD39zOiY2TOSuLok7XHFDCoaPjUVney8Ove+ecdSupRFxgf99x+7Q7D1ttVrikiMktyHwCy53s/Z6IFxeDXWIBjNTr8KliHg0hUTiRPwol/1g3BFy4/PGMADKk+MhxBd/+xNGjfwWXQ3BMHUpoYqLgXrxGlDZN4uah9c4tUvcOJmUbf2NS0Mgcz7MC7eg4f3HoEWj9XAN4rCq907spqd6JN3vCrEJwo6l2gylwMG4Gbi+brdD8wXxsKFuLoOFlCR7F2KsDEDElihy4Rgm4nINC3VJdveufI+CiJgQTL1pFCp/qMfuze4bR01bX0BI+pUIGjbD6V6O3aHZezp6StxtQ+BzbHazrvRA+Lwa8d0G3PXjbuvr+tAo/GPCzfgmOZt3UXFHyI3PG9MUHoquYOHHT1tPEEr2j0R0U3+Vl2r/E9D+phyaJStFzcVjyncA3/5d3NjGCnnnwoO3KrO4EGsIlITOwB1dL2Oq4kckogV1iEYJPQ50nzqGu9L9YuYnthEjV/+livBRljyWhoOIpPtDzsrgEJh7xG2aHA0VfyURD3aIzsoAZHLiZGjVWrfyQQB7JUsuxFTgiL0P05dZw6ezMuNWi1aLxThyI/GVYRDS1YTolrPo+m4bOkteA620v04nY1+2LBTSYaX6x+ToMGxsTOAZKixsRQyHHgjz87fQ0aZD646d0D/7HGeOieOniutqxdMlW3DVpePWRcWRsEmXAwoXjwyFwjKuDz5vTHeQuH2SkQ6ye23qVKB6/b9h2F0o6nyPsOaqiKR0i+UcH2LYswdnZ+XjwuLFuPT447iweDHOzsqHYc8ej6/NGgKO/YNYQ6CwTG89VtfWBRoKfEtnYgc9Hd/SmVZDxRbR0v0icNWIEbB4c8w2+khs/yVdlL0qr9Khr5RYQ8WWy+fchFufWY37XnmDGCoyQDwrAxBXJYpiBdj4wkneLtE9mrQf6Y1XIKKnP9mMuxOye4ZB+tntllg5A5j0R4Cvn4Ny+T9x6stLaG3vtYZ+AjKk4wkcFTGG0x2o/c064dwSDhQAaAAPHv8Y3yaN51xUOo8cBWgXeUE0jc4jR605K3zemBCRJeQhvY6Lv2VPXPv8HxGZP9urQnaOHoqw6A50nmmAqSsMqlAz1Ak9wg0OfZy34kllliukdmT2RLpfaqI3i7uNGG1Ltc99V4SaD3bzXkMKY6ZNJ6XJMkKMlQEKX4kiRVEQq/PHF07yVokuaziNbrwCb0/6I3Rto6DujUJopBJbl7yGoL4+Lm0SOiHbwZgx/sSbSGyw6eHBMDDV6JEc24CRq3MlhXQcBe8CMgTkiE1FjGHPHovgmZs6jwoAiZ0tGN9wDomRzjtDd3JWrLL6DsZTbEcXQntM6ApScnfdYxiE9poQ28H1t0HBVN/s3JHZA7jyeqCgALo/r0YVZoZ2cis0wwX+Xn2Ut+JJZZYYpBoC7kr3eyJIJ9ZLU2NwHqdUUJiWGo1jL/5P1DVcQZJp5YeEgQYw+Sn52P3z3Xhzzpu4M+NOAADNuK6IoUBBp9ZhcuJk0DSD6lPNOH24BtWnmkHTjLXvjzegQCGyJwY6Q1rfEQZNXU04YhOCqqbPS7sowwAMg6wTb0LbcNT5bVD46WQjzn5vWThGX6F1GdKpOFKHrSuL8NFfjmDvG+X46C9HsHVlESqO1Embm58QXLwkkqbo4uwH407OCqVUQrvCOZRCAci81Feu7DRny+vMS42CvjaxxpMrWA+FkzfKob2CqVOB6q9jYLgo4EXwUd6KlMosd5DakVmpoPCHGzN4DRXAWbpfSpiJC7HenD99coLzWmKaG4qFJNPKD/GsDHCUCiUmJ07GkwefFDXeVsny/A+NvM0Br/5FumA10OWzh+PoXm4xOC4KTt+NUHOE9XXpX9oQd3sd0iYloiuhGV0qM0JNQo1b+gnpbkb62e32HpU+6uIn4szohej+NgT4ttzuM/GFf4QE7wKxiSEXLhcvCfzfrAmcbnh3mw8qY7gb4elaOzC5qhblyfF2ybbhShPGVjRC1yos3CXWeBJCmpHXF4I6okHksC7ukNCB1UBihuwCce54uaQgNaxTWKbHnz49yTlGx+EpERNmem7HCUSGBqGhvZszPOTKm8PS1NHLWeXmDcG24DA15j60lOSo+ADiWRkEuNJdsUWr1mLDzA1IbZog2BwQAOY+mOXkYYmICcHcB7OQ+/N0zH0wC6Hh9gmQfISY7Q0RcxtlbUKYGJGA47ovRV0n9+dpuOb835HYeMzpvbr4iSgbfz+6Q6I5PxOXl0RM5VNANjGEZaHtKC5B6yefouObIo+vRwMwxSVg5kLuPAdr80EeQwXgbj4otGDqWjuQd7IK085WI29GPm59ZjXuX/4gLusxQCjhWqXTOXdk7sPu51JcAqa3x9LD5vh2y39tkmClG3kUTEYVjPXBvO+jcIXsibbueLmkwBoCfJ4tCpZwzdTUWF4PCcsfbnQO6YgJM9UYunHHP4vx6DtHcdvmbzFj3ed2HhKhRoxcOCbbekOwLSgsDGk50zy+DsE1xLMyQGFoBt2VraDbemBsb4KCoUBTwgvqA9kP4OHLHwYFBba+Kry4fbHtR8y9LwuLnr8KtRWtnHkcaZMSkZIdjy0rvkZXO3dXY1dy+4feO4Pb/zQNP41ZiayaaxBqCuccy4BBREwoJswagXZmhSWBkKKsCycDCmdGL7QM5sqB6LtX6sQEu3CQmMqn9uZufPjVbowYFyd7o0ixcOZYeAANywM/5dmnXeY4KKKjQbe02B+LikLSH1dxJnS6WjApAHEdXRgxdTrCx08AMAHa3/yI6vX/BmfZO0Vxd2QGj1JuOKC9vKk/18Smn4+7ngdTF9/PyDcCce56ucTCVeZrvXTff1lDgc9Dwo7906flmJNlXwrvTlUQVzkyW92z8sMyNHVwNzIFuJNth2WMR1BoKHq73K9Q6mhqtOv/Q5AP4lkZgHSWNaBmXQkaNh9H0zunkPaJGm+dfR7TDZcLnndl8pVQKpSiFujuDhM+fvko3nriEKrPNmNUXxjk7Pe11twWAFCpFJh5x1jOa7CaLkIl1u3N3airaMOKactxcNR71vOcrwNc3VdyrCkowLCXN0Kl7VdobYkeje7QGF5Dhb2X/kyL3TGxlU/bvv8vluxegjnvzsS+856XhUrFTJtxuOYwdp3bhdL3/s6dY9FXJM6NsCHbHga88cs4hOfP4h3D5nY4GioAQLe28p7HLqxCOHpKNEtWYtjLf4EqPtZp3DCeKhe+3BNTB2Ofa8L28ynf4bbnQRXqwnMic6Kt1cvF+Sa/l0sKfGW+uqhQq8EgJRHXFrFhJsdrARbj6OszDfj4aDW+qWjE7Ewd/nBjhuC5LI5GEiVY3iUO0v/HNxDPygCjs6wBjducY8Nxpmg8XX0//ozNqGTaoe7VwBhkgF5TAVCW8M/kxMkApJUmdxtNOLzzPA5/ct5uvbPNA0mblIi5D2Y55b/0qDoRYlK7vEeHoRv5Y/OBnwNbP/kA409dZ1fmHBQJ5N+ebZc34tiMztQWDXzp+nM5fnaxlU/GIAMAoK672aIAPPoO5M8QlyfkKbbdtSmawd/+bkYow+X6ZvfAjt4IRlChkwbQowT2prSgtK6UU6ZdTG4HX/UJpVRCe9dsVK/fajPP/rkBgPYu5zJkzZy5iMyfLUrwTHh+jrkm/f181L85Kuyh4EClNkGdwL+LByC+JYIHaC7rAvIZ1B4yw9TZ/zNRxWqgffaPbpct2+KqI7PURFwWsfkmjrDGzx1vFFuPJUWF4pc5w0Wdb2skVZ88gZ5O173HXEH6//gGYqwMIBiaQctO7moDRV+Z8GMX78U+Q39FUHtwM4pGfojfzLzbGr5wqzTZ4YnimHzKpf5qMpvxyV+dc0scYeeTn5KPvIfy8H3N97h4ugnhvRpkDh+Ly8bEclby2Dajiz3VDHx5RPS9WNjKJz5PEwMG7cEtFqMPAENRoBgG605tRV5MBpTjb3Z5T09w7K6dcZFBfJvQGc4/J2UIDXM3/w5bASC+3XJtLu0dxmxG07+3ias+OVyCcK3Jvp8PAE3Lv4HcZtSWRtkvrGoztJPaoGnZBtDLnXr/iG046Dr3pD/XJFzbAzZcQ/1UDO3KJ53CityX6PNY5KpAKRyDI/33sW11IBt9XaA1cQwi5wHG+r6WBKE01Al6UJd5T3xNqCOzu/oqQmEmqdS0duEv+84gWh2EVmOv6NJpb3hESMmy7yDGygCiu7IV5lb+HR0FCuEKJeJUjFUILbwnGgWn70FqUzaQYhnnaoGWgm0eCKv+ykLTjMv7OHYzViqUmJo8FVOTpc1DzGfi6pysUFC8lU+sgVA08gMwNvlADEWhRqVC6f6VyMmYJ1tzPa7u2jHt4s6NyzQgJMoMVagZvZ1K6L91vfuLaXfW3pGaG2PaugRItGn6p0kGJt8NGC5BMxyIHNZls7DaCK15mOchujrGMdekvRaagluAlzdy6Kwo7ETwVFottCuftHg0OFsdwPJ6zmp5Gy46dIGmFOgzwFh81wXaXX0VoD/MxOqsUAyN5C491GYjjEo1LoUmgRERpnH0Ggrl2NjmzXjDI0JKln0HMVYGEHSbC9dzH6E231w2X8TRqHBVmiwWNg/E1khhEXMfb3Uz9uRefGGs9uAWFI38AJVx3N6h+u5mWRMpuaq8miN4BjsQru2xLmAd7eIsPyo+1hoqBPgVUoVQMQ66FQa9pZyXvYfTwmqDB3keoqtjHHNN+sI1jmFFVUICwiZdjs4jR7lDULdutRgMXN2Ydz9p+aBylS8HUBdosYm4XKXwNG3GeKoe/5yhxH/3/QjVmRJEmvvL1duU4TgYNwMV4aOczuUybFqMvXgsfwzeOXzBLo+Gq3QaAJLGjkOYRoNOg4H380XExSM7bzZKP/sE3R39Lk3S/8f3EGNlAKGI5CuXtKeLY21xNCr4Fmh3EMqB4buPHNL3ntzLNox1/MJJ/OXkC9BrKuw8Ko4kmM2yJlJyhWRODqfQEAnEtvFkx7NVIL/7B9BZD0Roob5sGlTfzUFvTQ1n3goNoCkS+Pktf7CGCt0RmePO5RA+n6FtQhjnWqDONLuVFOqyOgYAKAbmbvan5hyu4Qo52b5mS6ItxosO6ll/BvXhPc73YRN4b90qj8Ei9m/OB2q6rMGx9vJe/OdYC46b46zeED4jAQDOFBfh87det4qyxcD5LyXC3IHr63bjs8Q5dgZLWsc5XN14iNOwGRl/OQ4tv44zx4amzRYhuJZmtOircWz/bkFDBQCu6zNIrvz5L63nRkTHYFjGeOJR8THEWBlAhKRGQRkVzBsKYhgGnQysISBHHI0KdoGuPt2M3a+Xodsorl+LI8bWHtA0w+shkbObsaNEfurEBLfvxYaxdOnT8GJDA9DNFvTaQzEMtGYzJnd1y5pIydUOgVFQeGu2Ar/7gAYNB4PFtgpk9LX9h/uOVT+6FAzD2H0i9hNSS+9F/qj+hEzp+iMMtJMMwr1zHDBcDLXPYfnmJaj+8h9LqEVicihbHVP96FKhKaK6KAagWixlzH2dqUXNlbckOpRDfr8/gVeWUIzYvzmZk3wdDY5rAczWxCA2/1aMmjLdaiQ49v6Jrf8Rn/xljdP1HL9prKfm6savcU49EgylQFrHOVxf59zLhzVslFVjoLx8mFOOjeNcXeHoOVEolKQ82c9QjNhGMgGKwWBAVFQUWltbodFo/D0d2eGrBmJ/jbbdhR25+bFJnOEagF/FVSyuVGK9DU0z+O6zShzb/5OdkeWteew7vwfLDiwDYMlRYaH6fs4b6hqRr4oBlh6XNWdlzv/moM5Y51TOPfUUjbv30nbJtiqdjnehZ8xmNPzjH2ja+m+7MmM6MRbDnvoDoufMtRvf+smnuPT446LmqYqLgnZcpXDPHCuWJchwMRTVX8fYHGP/1/L/fOXJrmgtLMSlZb8TaLjIQBVOYfRba0Bl3yzqmvzhMMvrYbnN/J998SfeD8XQZmBjlsWDI5TkK+Pf5pniIuzYsJr3/fnLViJ92nSn3j8UQ2NJ9X+g7hWZfNXHB7r5uBSahMUXtyHC3MHpIWRgMTLuf+UNO6+Hq7k6EqbR4IFX34JKJc6TTXAfKeu3bDor58+fx7333ovU1FSEhYUhLS0Nzz77LHp67L0CFy5cwLx58xAeHo74+Hj89re/dRpD6CcsKx5xizKgjLL/InVTlKChwpVcagsbQglRu+dsE1KJ9TYVR+rw5u8P4vDO807eIG/NI39kATaMvgOJZvscB63ZbDFUjJ2SdubuwHbXBpxF9Q6PVeLXD6tQv/63SH7xRYzYsgWj9+/j1R85OysfDZtesRoqiqgoxP/mN8j84isnQwUQnwPyWtY8NK96QpyhMnMloEkCQwO1pVF9Bx2WnT6DoHb1GjBm6SqwqphYF52hKZg6AKNRXB6P65JooPaIBrwtueQIxSiUFlE7mzk4zglz18IMBb6paLTqkdiqt5pphvc9V9C0GZ+/9ZrgmC+2vI7PjlU7Kdsmd+klGyoAoDYbkdylRySPoQJYPnl7YwOqT55wmOvrku7VaTBAf+pHyXMkyItsYaAff/wRNE3jtddew+jRo1FWVob7778fHR0dePHFFwEAZrMZN954IxISEnDo0CE0NjZi8eLFYBgGmzZtkmtqA56wrHiEZsZZFWwVkcGobumGfvMJ3nPEJLKy4Zrvd51H6d4qmLpdN0V0hEsl1puI9QB5Yx75M55EXkwGSvevRH13MxL6Qj9KzTDg1tdk7/8C9HXXTrsNa0//B7XK/s+iNdNYPuYOXDPjIcHz+bwCtMGAhldeQUj6aE4Dx1UOCA2gISwaO9OuxuGSEBzSJINytdO/5nHgmsdh3PkvmN57iX/SNk34pHZV9nbPHOkl0Q7IFYrJnM+d5KtJBuauRSGdg1XrPufsZgzA7U7HAPDhroNob2oUHNPW2IBX39kLBvZGr9rsnq6JUakWfa5tSbK7zQqJ0FvgIZuxMnfuXMyd279jGzVqFE6dOoVXX33Vaqzs2bMH5eXluHjxIpKTLTudl156CXfffTf+/Oc/D4mwjrtQCgqhadHW12kA5ioojxNZFQoKscPC3TJUAOHqIE8R08fH2/NQjr/ZUp5cVWSvHeLgUWHMZlHiZZIp34H8feuQBwaloSGoVyr7jKYeKC+sA2LH8xpNgl4BhsH/t3fm4U1V6R//3pu06Zp0g3QBSmURSlEWWQqOsrYgyzgqP8ERizrMoHYEgRF0dAAVARfE0XEdhkEZxXFwHBaFioqCIEUWWarIUraudEtK9ybn90dy0yx3OTdJ2xTO53n6QG9Obs7NbXu+ec/7fl9wnLyR25NP4NKjc0HgGoIV8lze7v9rWDgeBeYm/JL+FK7/5hFIFo46RaGaNcoLIuBdEz5/98zxuiS6LfxWUqfacmLcfja355XioQ2HPGRjsakeczYcEj2VmJW9GNuPF+Ht7UeQSTG9OnMVEOH6PtdqlE0inSEArmgiUBiSgMR6+S7MAs4lyd6KDmb0Fni0aYKtyWRCTExLvf2+ffuQlpbmECoAkJmZiYaGBhw8eBCjR4/2OEdDQwMaGloWY7NCNve1hFIiq3syqljiqRpBIIUah1w10LQJEJuHxWrBodJDuFx7GZ3COqnv78NrZPMORJMvZfJHqHHy09AAGFLvfu3ySZyKUQGFCIY+IwNF85cg6I016FTfkudSFhqFt/v/GnsT+zuO/Rw9CtfLfNJ3FlSt2YTP3z1zvCuJ9hRorYbbz6ZSN2MphMcWbzqGyJAgDL8u1qPcWDg3Tyk4xIRJYUgCqjXhknknYnOqHTQZa8YNQqfwYBxb/Z1sVMfdpM0b0RESEcmM3gKQNhMrZ86cwWuvvYaXX24J/xYXF8NodA2TRkdHIzg4GMUSf2RXrFiBZcuWtepcOzLuxmwCZw6XekRdxJJR1QoCMdxdYn0WC3bUiqBwvc7Fql7AGGbE4qGLMS55nOo5uCO1zdJcUmI77mWiKACf/TT8sSUSNnY8fnsmHP3KziKmoRoVukiciLsOVreyn86RIUAP8U/67gt2azbhc6kKcnek9aJnDk1JtDYcriXbIgKtrVDq1aNEVV0Tfvv3/YjX67B0aj+XKItwbo5CcAQbYlAY4hmhIRyP3bE3Y2LpDpGmEK7f1wZFoPfUmVj4f5MA2KI6Ofp0pFdsBeCZrQN4mrQl9e2HiJg4VVtBlmbvqiIZrYvqBNulS5eC4zjZrx9++MHlOYWFhZgwYQKmTZuG3/3udy6PcSKN5wghoscB4IknnoDJZHJ8Xbx4Ue0lXHMIeR7uIkRIRt398S+O5oS+RkXcE3l3nt+JzE2ZeGDHA1i0e5GtGeCmTOw8v1P1udW0CYiI1iEv+CDm75rvYaxWWluK+bvmezUHZ4jFgpLlz0tvs8D7RFEAPvtp+COCMTQlBsaoMBzv1BPfdBmIY516uggVDrZ8B4dDqfBJv/9dtn9FRKlLEz7333M/NOETa3QJ2Bxo1VYZKc6V42B8/hVw928F7lxrq/6Zd6xdhArgXTdjMYrNDZiz4RC2H2/ZehHOLQgOQNS/FwCQ8cAfEB8VBp5YkVRXgF5XTiGprgAcseJM+HX4vHMm6oJcHQ4jYmLRdexvYJz6IPr9bjGe+OcGTHcSKg9tOISDXFd83jkTVzThLs/V6qMdFUjO8LwGY2b9XtW1N9XX4eKJY6qew2h9VEdWsrOzMX36dNkx3bt3d/y/sLAQo0ePRnp6Ot55xzUrOz4+Hvv373c5VllZiaamJo+Ii4BOp4NO50Vvm2sUmm2do19ewtEvLyE8SofUX9HlE0jhnMjr3tdGQBALq0etVhXdUNMmYMRdPfDQD/d6vDbQ0g16Ve4qjO462qsoDwDUbvqr7RO3FD4kigLw2U/DHxEMXxxK5dBnZIha3Dss7X1swifmSOttHlFrz9WfeNPNWI7FnxzD+NR4aHjO5dyC4HA3Z7uiicBNd9+P64ePxGMXtyHvvxtEzdvOhl+HhbPvQJqmXNFozX1r60z4dTgb1t3hYFunCYPFmILsIemi19Br2AhMnf+kKp+Vi3nHkNx/ANVYRtugWqzExcUhLi6OamxBQQFGjx6NwYMHY926deB510BOeno6li9fjqKiIiQk2BbJnJwc6HQ6DB6sPgTM8ETNtk5NVQMObDkHXbgWDTXSodCQ8CDwWg61TuZ07om8Yn1tBLwVCzSW+iHhWoy6tw8qEs6j5Li0kCAgKK4tluwyrEjeZjR/vgo27015vEkUBWDbQtEnKvtpSCRx+mtLxL2Hi4CcQykN/hQUsFo8tp9omyC2+VxbEW+7GUtRVduE78+UY2SvOI9zS4mGp6eMw6n9e3HxP28i0u18gnlbt7sewsQbkgAkAbAJkv0SnZ3FtrYIx6MgNKnlgLkRufkVkg0Xew0bgR5DhmH7G2vw0+6vFa+7dWoZGb7QajkrhYWFGDVqFLp164aXXnoJl53+YMfHxwMAMjIykJqaipkzZ+LFF19ERUUFFi5ciNmzZ7NKID/hzbaO0i/qqHuvV3SJFetr44y3YkHKUl8XrsWNo7ti8G3dwfMcTp79QeYsLYhZ2itiT3z16DMjgTeJogBa/DREm+bRJXH6KyowIS0B41PjRW3MfcEvgiJvs0Ri7yq/bcdYrAS556pQqktC5749MDQlxt55GaJCSSmx1t3VVem9pB2vFAkjIv9XYt/ZMozsFSd6bkE0CDN5c2oaOFglvU2EcVVffwzrnRPA8xoP4zjAtZSadmtLaRzPa9Bv1FgqsdKlX3/FMYy2pdXESk5ODk6fPo3Tp0+jS5cuLo8JbqsajQbbtm3Dww8/jJEjRyI0NBT33HOPo7SZ4Ttq8jwE6muaMXRyCk7sKZQtg5YrC6YVAd6IBRr7fjGrejFox7lgT3wN6wRoQy1oruMhJfG08fFeJYo6UPDToFmM/RUV0PCc5CdXv0MrAPI228Wc29Lrx/48sospf0C1UFJanH0dL0TClm7OQ7HZMxIGePqsSMHDiq6mQ8Cx40CEERNSRyhG2S6eOKq43VJtN287QTpJllkLpdS0W1tx4TrsO1PuIug4WF17+vRJRVBIKJrq6yTPExKpR9dUJlYCjVYTK7NmzcKsWbMUx3Xr1g1bt25trWlc86jJ83DGYAzFfc+P8LqfT6uKBUhXPQkM6jwIxjCjqFU9YHOENYYZXboMU2NPaOV4wDjIZLeNF69t8CVR1IGEn4aaslh/bonI4Re/GdpIiVNpt8hMQNOfR2m+QmKn2GL66QdvITN4DQA3qSojlOTOJ+Zzona853vg9J39Q6IQJfvHnnws/8yzdYdAJp+LJUHvITGvAsizH9QnYsKEVRjzp8l4f985nK+oRXJMGGamd0ew1rbNT+ttYq6owLI9l+XuHpZtycM3fxotu7XFATCEBWHBxz+6iLPB5CJuKf8OzdUt8wmJiJQVKgCQMTubNSkMQFgjw6scmjwPMcL1OkVBIEerigUKBKv6+bvmgwPnMgfBun7R0EXeJdc6JbTqu9YDIytdG/IB0IZZYJyfrbjNQr24K3i9BAKifjNGI4yzfwP9jUl0IktNpMTH0m4lfxw5zxIOVvwl6D0QAnjqd3GhpOSBIizOQkKr2vECUgKnxNzgInAeuDkFf9t1GlW1TR7nz+Rz8WbQGs+AobkI5N/34S/aP2HjlQGOw3/fk++IrNB6m1ys16LIVCP5OAFQZKrHwfOViltbtmtouY4eNWeRXroDTXC9hPorTs20RAiJiESPIcOo5s9oW1qtNxAjcBDyPMKj6LaElPoI0SDX18YXsWC1EhScrMQvB4od5dZSjEseh9WjVqNzmKt7rzHMqLoSyQUh8dV+Hfqu9eg5pQTdRpchMb0S3UaXo+c9WujvyZY9jdCz50JWFgoXLsSFrCycHjsO5pwc7+bVjgh+M+4mdM0lJSh47k2Y1zwCrJ9sa8CXt1n8JIqREtgEgNWeK+RDabfsfOfOgzknR9azZCj/MxK5ChGh4jRfQSjZUfJAERbn3PwKr8YDdKZwy7bkwWIl0PAcVt7hud3Bw4olQe/Z/+95FkIIHm1aCx4tLtclVbV47t0t+Gjjp7ASK8Kj5bcLtZHRON5Mt6VYWl3v2NqKN7huCRn1OkSFBbkc44gVvyrfY/s/1Su0UH+l2qW3ECNwYJGVawTnPI+zRy/j6JeXJMfS9BGiQRALYqZsi4YuchELNMZxtMZ27nMY3XW0X0zpHIgkvnI87L1h7O/bbatkIwh+M5PzIrlTwF8tAuSb/dkoOaxHZFK9rX+QVC6J2khJOOUWojDO/l4RUxFKnlmj2IagdPV6yVN2RhXdazsJJbWJot4klqoROOk9YjEhLQFvueW3CEJMCp4DElGOofzP+N6aih41Zx0lzJf+C/znv7YIhdTrA8Dm0KE4881ZqusTclbEkrythOC3f3e1vxAaHnoL6wsUmDCxcg0hbOskXR+NxJ5RPvcRooFGLNC4zEo1MBSM7Sb8IU1y3hpe4115shw+JL760rPHBR+qYPzZIkB9sz+JXBK1kRIZceQCIS7vVW1JMJrLZOwX7P44iedPSg4pRRTdazttGdImigrj1I4HvBM47iKgb1kpsIfidVGFHjVnMbF0h8djwnYLHxIOa72rD8vu2JE4E36d4vk52BJ3HYaD8Ezy/t+RAo/nedssUYD1BQpMmFi5RqGpqPEXcmKBxjhuTNexisZ2rd3tWRQvE1997dkDwKcqGF+jOu5ltH1KS6Wvxfn8jmZ/Erkkak3waikt1E/tAL5/E8J75dl0UJwefB1G1RUA5eUod2szkGvtg0ISg3iIbwU50q1rW/rYKHmguC/OascD3gkcwE0E5PekEiulxKC43WJqAr4wTkGYtQ61mjAUhiSAcMrZB7SGg2LXq7ZZojPuvYUYgQMTK9cwviTQ+gNa47jedQMVq5las9uzLF4kvvrcs8eHKhhfozpiZbSj6i5iEcX1uPvSWKuLsd+51DQ5HRo1Jni04uboRy7no/XHKVu5EosqW7YELocY8NYNt2NvYn9YweOZpnvxZtBfhbfNfaY2djwJ9J0C8BrVbsDeuAcPTYlBVFiQaNKsQHRYkIvA8UDBjNBKgGLE4lKtAUMUtlsiLTUAx+FURC/Zce7QGg6KCTo1zRLdce8txAgcWIItQxVqElyVoDWOy7soHY53prW6Pfsbn3v2qMntcIM6qrN1HXDsP0D+bkdCq1Bl4p4TsTukCy6HGGRMxgi0Yc2uzf4AZG8pxIx3v8fcjUcw493vcfOL3+Bwv8X2R92XGRETPLdEZ084ICzOJboB2JoOakMtULJFs1S65i7E1pvwVO56jCi09Y2pgl5oDySN232QShSNN4SIliGrHQ8Ajc1Wj2NqHnfkZAFwf2+FZy5rmolQi3wJsADttkz26B54dfoAfDh7OPYsGkPljCwIOmdoehe559RExsaJ9hZiBA4sssKgxpsEVzloDeFqgswAghXHeWOA1x44evbI5nkAlkqJJEeZ3A5iBWovB6O5XgPt/u8R1m2ES4Sk+ch2qjk2f/oUkGxfjPSJsGSuxLItEaLLu4Xj8fYNt+PPues9bf3tzzAONEOI/hNwKCIx2F7tmrdQbKrHHV/H4ZPRr2LgiZXKuUA0Dr9dBgO/uOZUyPvjSMPbRy/8ZRvuSujnVZItoN4NWM341786jdpG+chRTaMFr391CnPH9ZYeJJGT1RAaj8dM05FjHYpEjWe+iBi02zIje3byynRQEHSLNx1DVZ0toiTXu6jXr3+LGdNuczWLk+hLxAgcmFhhUOFLgqsUtIZwXXvHoDqqSXYryB/l1m0Fp9Gg8+JFKJz3mOy4kpWrEDl+vOd2jMT2h/liiKvfy75/QPvWZy1Js3mboT3yOgDlBcFlq8RcBP7jLNzQOBdFEM+h+S6xP54bmoU/n/0MfFmLCNWGWWAcaLb50cAmVACCZU0zYXUL7Aqy4eFDXbDnT8egubhPORdILtE583lg23zR+Ur54/DR0bC6RVSc4QCEVpVh7UAtPj7T2dnaQxqR+6XhOQzvHmWLdF26jPoy+WosGvdgi5Vg3Xf5FBMC1n13Dtljesm3SxDJyQpNHoHb80rx45Y8FBL57RYCmzgoDFGOkCS45d6oZUJaAiJ1Qfjt2pbKIPfeRULOzAc3jQDPa9C13w1evx6j7WFihaEITedmbxJcaY3jBscPRuzd5bLGdmLl1v4qzfUWuXJsbbTyH2bJJFuRnALzxRB7pMDtHELS7JrV0J9YhLBODQotAgi0YRa3LRubjFgS9D6+aLjJQ2QI7E3sj9Pz7sG405vQvOsdaEkZwjo1wjmfsjEsHo9W3Y0dVnHR4yitPW9Ceg/KXCD7okrO7kHtD7loruOh7TsCYbpGcG5bQM7ou9YjMqketdWd0DzmFWg7G9FcUoLCxx9XfMlBEVbcsugRNKx+A8G1JeBUNpr0ZzUWYBMq//wu3xFZUKKqrkm28Z8DkZws50jP2R+A4k/e9nia8G7sjh1JlVDrTedud4b3iPXIX3FueCiWkMzoODCxwlCEpnOzNwmualxmpRoYSpVb+3sxUItSObZPSbZu2x/ESlByyGB/0O0PvpA0+9wziBxdSNEiwHXLRoADQSLX4q0hRR/TboTnLQM6i+eD/NjvcezYrZwYS1uCK2De+aXb/f47tLF6GPuEOKI6YnA8EJ45DZgwBQBQsz+X6vW0nTpBo9VCM/lF1Y0m/eaxY0cs6ZkGte+xM0KkJ73HFJzqHouv/vmOSz8g2hJlngNenzHQ687d7nNSm5DM6DgwscJQhDZx1ZsEVzXGcbTl1v5eDCSRMGSjKcdO9zXJ1mn7o/ZUmctWhgeEoPlypcPnRLZFgNOWjRhSeRocgER9EHoffg7SiascbjzxAni8KBmdcbxOZAh1p2HJ+11utomykZWy12TRd4Hm2H+ACCPCBg2z5ROVlIhXTHEctEZjS3NKlX473lRjyb0PUtb6NNCWOSvRa9gI9BgyDB9t+Qb/+OKoqhLl12cMwm03+C5UBIT8FblGi4yOCRMrDEVoE1e9TXBV4zKrVG7tN8M1JSQM2SyZK7Ay73XFcuzPb9+mblEUw7790bx+DfD13xWn7Owv4tgCEZJxQyweWzZilCJK8lPrK8NrwX0rX6Wkqy3ChMiz+Ly6p6x3SGVNA25e9ZVip2Eq99xDdvdct2uzEoCAhybnyZbX1yfCeN9MFLy4QSRZGAAhMC5e5Pqzo8JvR63HjlzH5fGp8ZLW+kr4miPiDs9r0D3tRpzaR1chFB0WhBV39HfcS1phSoPaBGZGx4CJFYYiNJ2bw6N1KIg8hR/Plnllae+ry6yQH1L9/T4k+Gq4poSMIduhLX9ASYJ0orFQjn24/Edc/+QTtoiA+6Jor4V179gs5OA0ll5GuSUa1oQUhEeFQN/nZgDKYkUbGw2g3jHvlhYBwuvy9nlI51/MGj8D57eeFP3UOpR8pzgHAPjDwDB8/q3rxgkPK4byP6MzqjAspS/++EEtLG7RF7FOw1TuuXVa1FwORoTTtVqJ7fU5uJXxmougN78A/OlxlLz3hei5S1auAnjeNTpH6bdDu/1n601UjkcON8PCib8P88b1Vr31I/D0pL5+X7yVTOyc0Wl5jOljxL4z5fgirxifHilERU3L/RETpmqgSUhmdCyYWGEooty5meCrLh/g5S++dRxxt8tvTZzzQ0aesGIuxXOUFg3J5FwFQ7bLlNGay7WXMSTjNuDVNeKdit1ya4QcnMJmI071nIaGkHoAPwEAwqOC0bPnKMSe+UY+SpM1F9g0C5L5FenZwN7XpB+fsBITUrtgfL8k8U+t+XQmbTf27YM3u/V0RAwy+VwsCXqvpR/Nz8BoXQyWNd3nkogr1mmYdvE31YUhAi2LIQEPDlYRjxTbq+irNoAsegmFjy3wOJcv24m0HjtV//oX4vEvrHMyonOdIbBuL13ljxjPbvsJPM9RiQHaqIeQMzJnwyGPxzhida3KIQkYvuJLF4HijJgwZVzbMLHSjhArQUO+CdbqRvCRwdClGMAFSKjSaiUoPFmJS6cqwREg8fpoZM7uhz0fn3aJsGgjCT5LWIezET+6PN85P6M1BYt7fkhlBN3z5BYN2eTcXqGyhmydLM1Ury+UbeszMhA5dqxs1ZKQk1EaewOO95vtca6aqgb82OUupJmq0LnsR+koTf8MQKOQX9FliGL+heSnVgXnU+fqmAm8BuNT43H6mw/Q+5tXPcbHowJvBq3BQ03zPASL0IhvaEoMfmkKBs0tt4RqMaPxSXSCGXFcFf4StEFmNAGpKkDp8uckHvZ+O9HhsSO1/eeGYET33NAsD8Ei51KrBK0YkNuGcn+exUpgCA3Grb074ZtfWkSkc6NDgWpNOHbH3owKiQRc4Z1Z/MkxROqCMLxHLNvGucbhCKHtBhaYmM1mGAwGmEwm6PX69p4ONXXHy1C15QwsppZPFhpDMKKm9EBomkyTtTbgzOFSfP3+z2iodV14deFajLqnD0IjglBjbkBIZBAeODodJXXiYXih9Hj7ndt963IsgcVqQeamTJfEXM5K8Lc3LIiplrBntkcZen65U3SRkUrWFBb9pAV3Q39pteScmq1ANpcI1PGojAB+6sqBOP2RVfueEIsFp8eOQ1NxCfYOfxYNuihJy9SwUIKRh5fDUlzkOCZaAaXUqdmHTs4tW2SAaHTGuWeR1QKsSZMUf4Kt+80Nr3ok5D4wsjs+P16MkqpafJCzFIa6mpbXcMFWit1zcilmND+F762pmMrvxV+DX5e9jJqSYFz4Wvn3sNv69aq3Ex0/YwCVYLECKAuNwv0ZTzp6EwlEhQbBVNfkVd6KkB+0Z9EYUSEglbwrjHQWOlIVSc6NDj3rzoDPO2dSNTX0dVuIEZioWb+Z3X47UHe8DOUbfnIRKgBgMTWifMNPqDtO2aCtFRDM39yFCgA01DRjx7vHUV/bhN5D4lESdVZSqAAt+RmHSj3Dwv5AzK6f8Bz+OZ4HB7hnI0jmgjieq5ScC6Bk/Q4QCbdy88UQ5G8xYu5HwNzNViz9wIq/vWHB0JO2J7iXY9Mg5GRURfVEQ0i0rLd7bR2HsDc/Rrf165H40kvotn49en6503OrQsiv6H+X7V/3uSg9LodQHaN3W1T0iZ7NFRXaBvAcHOXS7vzju3MoMtXDyvHYd4MQcRA3VxdKsYVKJpqOybTNDmm3oZzRZ2Qg6dU10Brpts14AJ3rqtCv7KzHY/eP7A6A1oPXFecolTsWK5FM3hWOLduSB4uVSLZh4IhVstGh8P2vyr8DJ/UL5YQQCdp+vEhxLOPqhG0DtTHESlC15YzsmKotZxGSGtvmW0JWK8G3G39RHCcYwNHa5dOOU4vUeXOv5/HyHcCsL6yIq245LpYL4gxVpcblSlRcSISWq3SpoJEyZYupBhZ8YsXLdwAXBiZ6lGMrISyGDcF0UcPaK03o4m3isL+grY6RaRvgjHu5NM/Zoi4C+5P64cGRnyuWYv9h0giMDR+AzuFDQLb8A5zMdpUtGVkZ2hwUZyxWghM9BqN09Xoknj+JpGPfw/TBB4rPi2lo+WEWoiLZY3rh+vhIr3xWBMT8VnLzK2TPJwid78+WS4qaxPoil60fdzgAkZYrSKwvchi3yb2ee74S49qCiZU2piHf5BFRccdiakBDvgkhPaLaZlJ2ik5VoVZhbkCLAVwnA90falpbfbXInTf3eh4HenHoe5FgcY8/oHfP4YoOtrSfkku/BwDbYqYNtaDzQBNKD4ubsgn9ZObvicL1y7ZBG6Tc48g5ube5zBZl0zWaqeamVD7eZq6+NNUxlF2T3SMh7r0zc619cKVLGK5LLEF9mVgpti1Xpl/6BPQBj9z8ChzoswhDcm2p2J7LHkFY1gpof3jVt9JyEcS7VsdRda2u0EW6zFcwOHMv1T1VcgWvf32aek7ufisWK8F3p+l+F/adKZcUNbQNDGnHOUeCWKXPtQcTK22MtVpZDKgZ50/UmLrVmBswqBedXf6gzoP8OU0HSnb94HlU9DXihjsfodp28eZTcnMdj8K90ZALxHMAuNIKNBw6Aq1C1EMsuRc8j6iq09DVV8rmrCj1R2prV19FYaSQkCvkrORa+8i+jhU8ljXdhzeD1iC0cyNcP3S3VDJtzyt1qkDKx5AgSN42ruggjCpLy5WQygHZHdIFD4QYEFdvEp2OkLNyIs6W2yFmcOac9LzvTDm1WHH3W1HvhiudLUPbwJB2nIAvzruMjgvLWWlj+EjlT9ZqxnmDxWrBgeID+OzsZzhQfAAWq61pnRpTt3C9zmGXD7TkYwh4k5+hFl9en1gsqNmfC9PWbajZnwtisTgqNeTyQjzhQJsxoBS5ERIvPbairFZwIOh1+mP75MVyMwiGDOAk9/+lzi2U4ZpzcqiugRZzTg5Ojx2HC1lZKFy4EBeysnB67DjX1xHaBgBwfw+F6IlYw0MxdliH4qGmeSiGm9GZPVdmu3WII6+ChxVLgt4TeVUn9v4V+sRa0dwSrdGIJJVly3I5IELXatuE3GbEceA5DuGP/QmvzBiED2cPx55FY2QTTQW/E6WfSg6u9vOCmCquqkVSXQF6XTmFpLoC0Z8pDjahk36ddBJyYYit0aGUnCEAqikbHTrjL+ddRseCVQO1McRKULwqV3YrSGPQIX7RkFbJWZHrWTOm61isf+I7xa2giGgdZi4f4bC5FztnfFi86vwMb1H7+nIRBgCqKjXUIFc5IlT9SOXMEADgOVyOucHus9KSU6Grr0Cv0/9B57IfRSMlSudWqpBSi2JFlfNCb7UA374E7H8TqGvpdlxIYrGsaaZow8OY8GBU1jSKLoIaWJEZeRavT0kEHxkPJI+ABbyLG+5wPg8bgyXKkp0JiwMW/gJC4PPW2b4z5Zjx7veyY0YUHvPsWu1l5EsQHoB47CM6LAjPTk1DSXU9zlfUomt0KNbuOYfwojzJMmOhase5Gmh8aryH07AzQjWQVFdm52qg6LAgNDRbUdtoERmtXL3E6HioWb+ZWGkHhGogKWLv7dsq5ctSPWuEKMTqUauRUnGDbHdjAJjwhzSPxoFyHYbbAtrXl1pIhe9qn1yOnsYIXF6xQsEZVQUUYqBmfy4uZGUpnuo/E/UYfcNvEF0aj9JtX0LXaEJU1emWrr8igoD23N6U4bqjShid3Obh6WJCBNY2ZeJ1y288IirCYvX0pFQ88oHnQixWUgt4CgWa0mUHWVupnGmV+N+RAszdeERx3Kv/1x/jmor9klMktqUTFRqE+0d2x5WGZqzdk++S/0NbZpxgvwfR4cEora7HF3kl2HpUukpnTvIVRB/93KXRYWRsHG69bzYqOvVxMZv7Iq9YVGRJ3VtGx0bN+s1yVtqB0LQ4xN7bV8RnRYeoKde1ilCxWC1YmbtSsWfN9ju3Y8If0kR9VkLCgzDq3us9hArgu12+r9C8vlxpslDqXPPKi7jtrmfwl1ffx6/qCx1JrqUrV9JNxMv8huYSusqYgqAaPIJ/YcOWCMSXVXkOEDEs86nDs0qoe99s+qutO7Pbz6MeNZin3YRfSFdsd4qqOCeVTkhLwJs8fbM69xwHmtJlB5QVS0rQbl10NoQjvId6wSjmMivVI+eF7T/h3d2u7rdKZcYEtjLjibeNQ2qSAc9uo89r+V9VHL597e8oPpmHK1WViIiKRlLffuBFPkywRoQMKZhYaSdC0+IQkhrbZg62Yp4kzjh7ogwZOAQpN3bycLBN6h3t0eG4I6G0kAp+FnFn8/DQh422T3HDhoJYLKj45z8VK0OMixehZOUqRet8d8w5OShesYLqGpLKrJjwAwetmFARcOt/RJs47E2CsTvNpXSLe/Oud4DOYqLRJraWBr+PnPqbHNEV98VKTbO6zuFBGM7noTOqUIoo/GDtjXISiViu2mOsB5QVS0oMTYlBvD4ExWbxBV6IGnnTXFDJZda5cqax2eohVAD6MmP+cj4e+UY0nV2SIlM9fjhvQnq/G6jGs0aEDDGYWGlHOJ5rs/JktZ4oPM+hS98YdOnrv86s7Q1t5CDa7mfh8HTQaKgqQ/QZGYgcP15VfoNkfocbgs/EXXulGg16IlyvosW7l2W4HuRthvYbmiJcQEukjQ85EMSjHFum8DgdPkBysaJqVpe3GcO3L0J6cMtWUyGJwX+ab8Hvtdtsrye1BuqTbBVLfuCLvGLUN0vnYgCuya60SFUYSdnpv7/vnEfpN0BfPrz32FkQTYqqOQLqK3hYI0KGO0ysXCPQep20lidKIEAbOajQRXp4OugzMqiaDnIaDXXeh6xjrvM4qrN5IlwvRym2fEqutdvsh4UR8MFGWBt5iNbacBy0MXqEdZJ2rhXop69Dv/7yZmEuuLcJqCkH/jOrJZ/HTjwqMFu7DTmWwcjQHJQ4GWfrh+Rl3pXztsy5slqs2fmL5H2MCgvCijv6i25xyDURVHKZFTNRO18hLkpoy4cLG4OBUKqhLrAKHoavMLFyjaDkSdLaniiBgFKEwd3PAnD9REjTdFANivkdTkhVU4h+DheJlNCKLRo8FtBkAzT2TtTVBSF2oSIBITA+NAPc6b8ov5CaLZi8zZ4NGDnBks8VwQG3v+Yc/qyZjyXaddA1tlQiQZ/k0rjRAWXPJLVeJTotj/Gp8VTncd7eoXWZdTZRS44RFyVCmXGEpUbyZ+2KF2XGvmxvMRjOMLFyjSB4kszfNR8cOBfB0haeKIGAc4TBfaG32r9/u/+vXZrFuX8iVBM5ATyN0UIHDkDd4SNovnwZDafpjLukNgakhAogHinxh9gSW0BvizyNN5oKQaxAySFxJ18BTVQUIu9+CHjtLaruzFQ4mie6nUum5wzPAYkox7P3joam+1PKIkRMDOkTbT4xTqJGaltGjmJzg4crq9R5ikz1mLPhEB4b1wvdYsOpzu8suGemd8fyz37y2AoiHI/dsTdjYukOj98NYeju2JEgHL01ly/bWwyGO0ysXEOMSx6H1aNWi/qstJUnijNtZv3uhCPCsPx5lwqc6tBwvN7/DuxNtDXF88cnQik3WliVG7d5iyY6GvF/eVoyUiImtmjvg9QCqq0pBYKB2svBLr15xLBUVaH20BGET1hlFxhCrYljhrZ/7FswinOzWmwiwsvNMk1NqXJrACkxZC6yHbc3aJTbllHCWVDQnOeVnacQHRZEdW5nwR2s5TG2b2d8kVfqMe5M+HX4vHOmh8/KFU0EdseOpOqO7Ayr4GH4EyZWrjHGJY/D6K6j29UTBWh763dn9BkZiEyoReXaRdCYTPY+MoXoxr2LZU33IcdeMuvLJ0LJxFkVQkVym8cNLiIC5MoVAIClogIlK1cBPE/1PtLeB7kFVCgFVtWpeJi9O7NotMK2BUM1N4XOzYoobTXJiiH7Hdq+GOgzCbn5VV43E3QWFErbOwKVtU2yj4sJbouV4HiBdJ+pM+HX4WxYdyTWFyHMUotaTRgKQxI8IipiEpMAeGxcL3SPC2cVPAy/w8TKNUh7e6JILeSC9TtUWpmrJm8zuE2zEBNFQPS2iID5Yij0IVfwRtwa/DnscYy6/QGvPxHSJs7KwnHgCAEfZYClSrxnjOP17EJFgPZ9VHMf5BbQXGsfFJIY6EOuiD7ujiPRWaY7M/XcTn5G9ZqeUG41KYohApgLgPN7UVqtLvJgn4WHoNiZp96MUCI+5SG4aYQQ4XjZLsiPjeuFjQcuMh8URpvCxAqjTZFdyEUMzfyO0ydl88UQlBwyuGxdaEMtePLmDdCnLvb6JdQkzkohJL4CEvb/7lU9zlC8j2rvg1zpqdBI8I24NdCGWtBcJ1MJ5F4iLbIFQz230aPAHf1Icl7SuG41yUIrhq6UoHNkqjez8OjPs/a7c6rOAwDR4cGoqGkxmKQ1yFODIKyyx/RC9phezAeF0aYwscJoU6gdTu2GZn7H/knZfDEEBd9FezzcXMej4AsCfPA69PfO9eolvHWCjZ0zB7qePT1zM0SqeDTR0bBUVEifTOF9VHsflEpPd1iH4mHMw4r0jSj5CvDYxFJRIk09t8/eQ3htuey5RHHaapLFagGO/pvunBFGDE22NRAsNtVT5a24Cwphq80bnp7UF/GGUGWDPC9LiMWEFfNBYbQlTKww2pS2tH4X5UqJQtWKLaBe8uaHiJyR7VV0xxcnWKFiyDmpNHLsWI8qnqaSEhQ9/rji+aTeR7X3QejkK7UQcwCORt4CwzNPQ7vxbyh58wM0l7fkRqgpkaaeW+EFqnECZOhDqG3qiWbeCG21EWEWi/z9Pb8XqJU2r3MQFgckj4CG57BkSqqjt40Utv48Kcge01P1Fo0U8YZQUfHgXmY+ODlalaByzFnGC4bBaAuYWAkgiJW0mf1+e2CxWnBGU07lKaW1FNk+2fo78TfCSFG1wqG53OR1dEfRMVaC8rfeQvlbb3lUDIklvNbsz6U6p5RwUmvB77wQy+ZHaLXQ3zsXkTOyva70op5bYjeAsnWP+WIoSrb8D81OjvKO93XcWOD8XhBTEWrPm21iprMRYboiqgRn3PB/jp/TCWkJ+P0tKXh3d76oUywAmOqasGbnL7g+PsJl8fdmi0auak3Kp2XqjQl451tPy305pLxgGIy2gr5o3gcaGhowYMAAcByHI0eOuDx24cIFTJkyBeHh4YiLi8Ojjz6KxsZG8RNdxdQdL0PxqlyUvXsMFRtPouzdYyhelYu64xSf7DoAO8/vROamTMwqfgFlkTZfE3EItGHNCDu4AFiTZisb9SfJI9DM0TWK9Da6I/i52L7xQmy6VQwJSaXmnBzHMUEQSZ6f46CNj5e00Pfm+UKTuXiD61ZCvCHEZuue2hnI3w0c+w+4C3sRPmQwDJMnIXzYUFURKuq53XYfEKpcWm7b8otCc41Isu6jc2Gemwbzc3fh9P1P4cKil1H4p8dxISsLp7PXwHyRYtvk+tsc/91+vAjvfCstVIAWobdsSx4sTgPVbtHI+ZgIZebukZpiUz3e+TYf41I9m5HKIXjBMBjtRZuIlccffxyJiYkexy0WCyZNmoSamhrs2bMHGzduxKZNm7BgwYK2mFbAUHe8DOUbfnLpwAwAFlMjyjf81OEFy87zOzF/13yU1JaA8Bz+OZ53dDl2xfaH2zjQbDMfFXws/ClYeA20o35PNdSX7Rx9RgaSXl0DrdGtNJb34lfOHp0peX4FiMXWX0ZWEFHkh3j7/AlpCdizaAw+nD0cr04fgA9nD8eeRWMwgT9gE5frJwObHrT966XYpJ7bqe1AnfwCKrvlR2x9loq/saDgu2h7YnALzWWVKPguBuaLUrFAzqV/kBqfFWd3WQFhq41W3jpEotvWjJINPwB8+ZOnz4oSviTnMhi+0upi5fPPP0dOTg5eeuklj8dycnKQl5eHDRs2YODAgRg3bhxefvllvPvuuzCbpb0AriaIlaBqyxnZMVVbzoLIfVQLYCxWC1bmrnRxzM29nsfLd/CoiHQdqw2zIGlkJfRdhT+K9udsX2zbEvITYXc+Cm2sQXqAQlSClsixY5GwYgVi58xB7Jw5iHvkEWji6KI6HjglvApICSKt0YgkivJvfUYGEl9ZDT4qStXzhSZzvx6QhPQesdD8vMUmKt1LfH0Qm4rXNm6svapLnpYtP2kfYEujxvF/MUoO60GsYrlNcKko8ibnxFkACFtt0jNx5elJfUVzSGhs+L35c8L6+zDak1bNWSkpKcHs2bPx6aefIizMsyfFvn37kJaW5hJ1yczMRENDAw4ePIjRo0d7PKehoQENDQ2O7zu6qGnIN3lEVNyxmBrQkG9qsw7N/uRQ6SEXt1yB3Ot5HOjFoe9FgugrwO8bKjHQUAPBe4pY7QtNvQbakMsIO7sHXM9bvZ6HuxNq56eXovCx+Z45JX5q7CfqXusH3LemfLHQN+fkoHTlKlgrW/ri8OHhMNx5JyLHjqWbkArTNLX5R7LXlr+bygyO1qhOTh4012pQW5uA8Ahx8zoBbyIPcRE67DtT7kiAHZ8ajzfvHYSlm/NQbJY+Hwfg2W0/ITMtwWMLyN8RENbfhxEItJpYIYRg1qxZmDNnDm666SacO3fOY0xxcTGMbp+coqOjERwcjGKJP/IrVqzAsmXLWmPK7YK1mi4/h3ZceyLWIfZyrXTeB+E55CXb/tBOLSXg7MmPov4nRx+HccmzXpnFSTmhxjxwP8zbPvO5sZ/Y64m61/oBsa0ptf2KAOk5WmtqUP63v6HyX/9CwjPLlN8HFaZpspb2Elg5HkfjeqBUl2T7meJ4aACbiRwF2hD/ROSab30BSIuS7R+kNvIQHRaEBf8+gmJzy4cvoVHhy9NuxG/X7pd8rliTQm/nIQfr78MIFFSLlaVLlyqKhQMHDmDv3r0wm8144oknZMdyIkl0hBDR4wDwxBNPYP78+Y7vzWYzunbtSjHzwISPDPbruPZCqvLg3lF0O42d7LkYkv4n5Wav3G3lnFAr/rEOSa+shiY6xm/9ifziXiuGmKGal9DM0VpVhYJH5wJ/fVX+/aYUDdTjnJDtOkzZkTmsUyO4UAJrHScRO6FraqDtbARS5AWhkHNCuxUkZpdfbKrHQxsO4f6R3anOIRZFoSkz5zi6rSDmTMsIFFTnrGRnZ+Onn36S/UpLS8NXX32F77//HjqdDlqtFj179gQA3HTTTcjKygIAxMfHe0RQKisr0dTU5BFxEdDpdNDr9S5fHRldigEag7wQ0Rh00KXI5Fi0M3KVBy/9rwmGoDhILRUcOMRbCAbVN1J17XVOMlVC0QkVQMnKVQi7ybuqFTH84V7rgZ+2pgTUzFHx/aYUDdTj7Mj9TD204RC2X0mxbcVI/JxYCVBJInBP85P4OGkUALGNKtsRTmsRfVSANn/JOefEW4RZ/O8IXb8j5yiKxUqw70w5th4txPQh3QCIuwgBwIM3pyieOzY8GN/8aTQTKoyAQLVYiYuLQ58+fWS/QkJC8Ne//hU//vgjjhw5giNHjuCzz2y21R999BGWL18OAEhPT8fx48dRVFTkOH9OTg50Oh0GD/b9E2RHgOM5RE3pITsmasp1Aeu3olx5wKOhZAoAeAgW4ftFvX8LDYDayzr5ZEiRJFM51Li0+gu/mNm5VQzRJszSomaOiu9P8ghZ0eBeMUMDTTXLsq0nYclc2fIaLmNs3y9u+h32W1Jx66UjIqNajrS83e6vaK9Os4tEQQz870gB9p0pdyk7FpiQloDHxvWWv0AFCIDymkbEhAfJvatIcMoj2X68CDev+goz3v0eczcewSs7f4EhLAgGt87MQgXRmD7K4rG8phEHz1cqjmMw2oJWy1np1q2by/cREREAgB49eqBLly4AgIyMDKSmpmLmzJl48cUXUVFRgYULF2L27NkdPmKihtC0OMTe2xdVW864JNtqDDpETbkOoWleVpC0ATSVB5dLrsefRizDfy/8zSXZ1hhmxKKhizAueRwQ0w/NrytXdwD+d8H1p1uuV+XOHAdNdDQ6L16MIKMRoQMHoO7wEb9tTfk6R9n3h9cAE1bZqn6k7OJoevA4kXvmMpKrD2EIX4VSRCHX2gdWp89VjnyNkJuRLtG5+cna3yKnYQDSyk6jU71J5tVs1UBxaWZUnQl3zZMKs8A4Pxv6jAz5LSm3yEP2mJ74MPe8Sy6KN/xmQBL+8d05xSaFQhTKXTqZapskOyH/70gB1RxYuTIjUGhXB1uNRoNt27bh4YcfxsiRIxEaGop77rlHtMz5aic0LQ4hqbEdzsGW9o9ZF91Q7LhzKg6VHsLl2svoFNYJgzoPgkZYxFKnQntfJ+CrBxTPpdZ91V/jaFDtXmvf4olfusQlctIqfZHsOOZIuRWk+P6kTgUkRANVDx5n8jZjwOaF2BjcImoLSQyWNd2HHVbX96S0uh4Y4Nm5mUsegVF5pfhowyHENlRTvWxwpAU9p5Q4VaBZEdYjFtw92ZJiQNiScvc60fAclk7t57DddxcatNlM41LjMSQlxkMkOeeRKEWhOAAbD1zEnkVjXBJkaZNwWbkyI1BoM7HSvXt3EJE/3t26dcPWrVvbahoBDcdzHa48Wc0fPQ2vwZD4IZJjwoYMlV/oVSaZKgoHPyatOk5pNzQreJSuCaI/qo/U4pijUsWSmvcn1VM0iFXMyJK3Gfj3fQhxW3rjUYE3g9bgoaZ5LoLF8bMn0rlZcNvd+C5d/yBtiAUcD4QbG+GIXdy2ChbwimJg2ZY8jE+NdxED41PjMW9cb6z7Lh9VdS2JtPGGEDw9KRXPbsuTTYAVSoU1PIfxqfGSHY5pIptiVUM0SbisXJkRSLSJgy3j6kXJddN9b10OX11ZW/t8tESOHethtOYOHxWFruvWoeeXOz2FitXisK1H/m6/GuIJCKZrkvN0e3+IxYKa/bkwbd2Gmv254km3gmjof5ftXzVCxcmvxf1nSdAAS4LeBw8r9c/UhLQE/P2l2UBUJKTjGfb2Dp2crAH0ibZIUepUVWJAQMgfeWXnLw6hEhUahMfG9cKeRWNw2w0JkuZvYqXCHiZ8TqKINrLpPk7OgI6VKzMCESZWGD7h7z96vrqytvb5aKj94SCsVVWyY6xVVeB43lMo5W32m229EvqMDPT+bg/i/pgN3uBabeb8/phzcnB67DhcyMpC4cKFtr45Y8e59CryGkGYfb1C1q+F54BErhxD+Z8B0P9MaYO0SMr+rf07iQRaob0DAGQ+D8w75ti6ohUD350uw/+OFODVnadEq5hszQtP4Ys829abYp8lygocX7Zz/DUHBqMt4IjY3kwHwmw2w2AwwGQyXVNJuYGGmgREGtwdZ/3hf+LP88lh2roNhQsXKo5LfOklGCZPajlg3wbxXFTti7L9035rIPX+SBrc2SMvPgm+vM2eeS4K/EX7GEbc/gd1P1NWC8yP9kPJd1a3BNpmGAeaW9o76JNsQsUpIrTvTDlmvPs9/WvJIGytOOePiBkpqolmWKwEN6/6SnE7xz1nxf0cvsyBwfAWNes3EysMv8H+6Nmo2Z+LC3YvITm6rV/fkkhrtdgiKJILN2fbnnBbTFsTYrHg9Nhx0om49pyWnl/upBd+Vostr+XkZ8D3b6iek+W+LdBcd4vq5yFvM8jGmU4JtBabYZxzbPn/3vcQg0piwBs+nD3cw3XWF4QEYEC8aohFSRiBipr1m20DMfyG3N56h8BPuSJCYq9HnoyAWKNENbb1bYTffWqct7hUCxWbX4um+0iVz7OTOhXc9PcR3j0chuQ6hBudhEpojKhQAdQ3F6TB3+XAbDuHcS3QrqXLDEbAILYloU+0eYio3HpxqbbhONctFKnE3la0rfcWv/rUSG5x0WAv+B2UBZz4r3eVRkBLxVL+buD8HttUUn4FdL9Z9lyCGHDf5vSW1igHnpCWIFs1xGB0dJhYYTCkFlJzke24F7ki+owM4NU1ng0UpUqVW8m23hf85lMj25mZglB7r6hdz7cc80ZICltQtWVAyq2qBI+7GDhVUo3Xvz6j4iJavxxYiGwyGFcjTKwwrm1kF1K7k8b2xbZP5Co/yeszMhA5dqx4Yq+wcAqeJF2H2RZgc5HEXOw5Kyps633Fbz41iltcEtzyJ4APAnatgM9C0g+RM2cxsO9MuSqxwsqBGQzfYGKFcW2jJlfEzXiMBk6j8XSjlVg4SeqdqP3fO2iu590SQL2zrZeCtjLKq+0sMVRvXdmF2S2PA3+9EdJCEsCWuYBO7+nr4iwGy8/4R/A4oWSq5o5i92J38erNNheDcRXDxArj2qatc0UktpzMJypR8v6/0VzXEsbngy0wdK9DZO8IhGWtAOeHsmVzTo7n1lR8vKSLrurtLIiIodhO6pNTJ6wELu5XjsjUVQDv/9o1SkJdEu195ExIvH1owyHR3j1SPXlE8WO+FINxtcJKlxnXNvm7bdUpSmRt9Sqy4oJEebL5YggKvrPnZUgs63KCwhm5qIkvnim00RhRMWQ0wnhDCfSxUltcznPhgfRsIONZW1XWpgflx7c80fbPiD8Ce19Tfh13vLy/PvsLtaO3DoPR3jCfFQaDlrb0N3ETRsQK1JQGo2BvDKyNHGSLYykEhVzUJHLsWP97poi8vqQYIgRJIyvtBmxyf3KcFunQaDoh6fxcjrO9sWq5c62tTYAXeO0vFIDeOgxGW8J8VhgMWngNkKawSPkpV8R5K8l8MQSntxhxcVccrI08FF087AKg5PkVon15BKHgLkaaS0pQMHceyt56y7+eKe5Pt1hQ8vwK8URcQgCOQ8nP3UEilKIN9udvX9ySdEy9iUS8EyqAT1VWXvsLBaC3DoMRqDCxwri2ydts3zaQYMQf/ReGty+IwrZPc53KXz8JQaEoFABUvPc+1UvQequ4Q2UgV25C7c3/sPXfkcW+SF/cb8vbAOA/SzZ3bGZzbVll5SAAvXUYjECFiRXGtYui/wcHHN/kv67HySNAIhJRckhoGujdAuwuKGiEgtVkojo3rbeK0pwkx5VV0EcxrpTYhOL/vQfoW8OF1b9VVqoJQG8dBiNQYWKFce3S1mF4XoPabr+3N9PzPlLgLihohQJvMKhrAeDDnGTHqV2kU6cC844D920GQqNknsDBtdmPAvrE9k1gTR6hsM3VjlEfBiPAYGKFce3SDmH45rDe3j9ZQlDQCoWY++5znMf9vAClZ4oEYTcNhjbWID3Aee7eLNK8BrjuVmDKa/bnuT/X/n16tvzjo560JdNmbbUlrrZnpQ2vkdnmaueoD4MRYDCxwmhTiMWCmv25MG3dhpr9uaLJom1GO4Thvd1mkRMUtI0T4+b8AUmvroHW6Ho9WqNRtsqIanont8HY5xxsW2ru22oEIKRl7r4s0lLbQkKUJONZmcffB0YtslX9uJvItRdK18PKlhkMAKx0mdGGqDUka3UcpaMKFvd+LB0lFouthFjKwh4AFxYGXqeDpbLScUzpfXKUDQOiTrPOYoTWM4UapxJc88UQlBwy2Le67HMPs8A4UgP9q8dd30dRM7Qkm1BJnSrv6qrk+NrRHGE72nwZDD/AfFYYAYcvhmStisOUC/D0IUWrfLqlERaSPYUUztsuYlDEP6b2cjCa6zWubQPEjNekFmnm6spgXPUwscIIKBzRhFY0JPMJpU/4rUBrCQu/R01ooHWapTVeY66uDMY1gZr1m/UGYrQ6VB4cdv8Qj6Z/bUHqVFtvmDYMw8t2ZPYB0caJrY0/c39asQs2g8HouDCxIgGxEjTkm2CtbgQfGQxdigEca+3uFdQeHF4akvkFXuN77x+VtIuwaA2E6h6l3B+aEtxW7oLNYDA6JkysiFB3vAxVW87AYmp0HNMYghE1pQdC0+LacWYdE1UeHIyOh1Dd8+/70NJzWEBlCS5zdWUwGCKw0mU36o6XoXzDTy5CBQAspkaUb/gJdcfL2mlmHRfa0lpvDckYAYC/SnCZqyuDwRCBRVacIFaCqi1nZMdUbTmLkNRYtiWkAk6jgfHJJ2wVMPYOvC0P+m5IxggQ/JH7kzwCCI0B6iqkx4TGMFdXBuMag0VWnGjIN3lEVNyxmBrQkE/XZ4XRgj4jo9UMyRgBhJD7I2W8ZrXYSp2P/cf2r2jfpQ5doMhgMFoBFllxwlotL1TUjmO40loVMIwOAo13yvm9QF2l+PMF6ipYgi2DcY3BxIoTfGSwX8cxPLlqKmAY6pDyTjEX2Y4LeS0swZbBYIjAtoGc0KUYoDHICxGNQQddikzDNgaD4Yqidwps3ilWC0uwZTAYojCx4gTHc4ia0kN2TNSU61hyLYOhBjXeKd50ZGYwGFc9TKy4EZoWh9h7+3pEWDQGHWLv7ct8VhgMtajZ2vGlIzODwbhqYTkrIoSmxSEkNZY52DIY/kDt1o7g2SKajNt6/ZoYDEbgwsSKBBzPIaRHVHtPg8Ho+Hhjx98O/ZoYDEbgwsQKg8FoXby142+Hfk0MBiMwYTkrDAaj9fGXHT+DwbgmYZEVBoPRNrCtHQaD4SWtHlnZtm0bhg0bhtDQUMTFxeGOO+5wefzChQuYMmUKwsPDERcXh0cffRSNjcwhlsG4KlGy42cwGAwRWjWysmnTJsyePRvPP/88xowZA0IIjh075njcYrFg0qRJ6NSpE/bs2YPy8nJkZWWBEILXXnutNafGYDAYDAajg8ARQlqla1hzczO6d++OZcuW4cEHHxQd8/nnn2Py5Mm4ePEiEhMTAQAbN27ErFmzUFpaCr1er/g6ZrMZBoMBJpOJajyDwWAwGIz2R8363WrbQIcOHUJBQQF4nsfAgQORkJCAiRMn4sSJE44x+/btQ1pamkOoAEBmZiYaGhpw8OBB0fM2NDTAbDa7fDEYDAaDwbh6aTWxcvbsWQDA0qVL8dRTT2Hr1q2Ijo7GrbfeioqKCgBAcXExjEZXw6jo6GgEBwejuLhY9LwrVqyAwWBwfHXt2rW1LoHBYDAYDEYAoFqsLF26FBzHyX798MMPsFqtAIA///nPuPPOOzF48GCsW7cOHMfh448/dpyP4zxdYQkhoscB4IknnoDJZHJ8Xbx4Ue0lMBgMBoPB6ECoTrDNzs7G9OnTZcd0794d1dXVAIDU1FTHcZ1Oh+uuuw4XLlwAAMTHx2P//v0uz62srERTU5NHxMX5HDqdTu20GQwGg8FgdFBUi5W4uDjExSk38xs8eDB0Oh1OnjyJm2++GQDQ1NSEc+fOITk5GQCQnp6O5cuXo6ioCAkJNrOonJwc6HQ6DB48WO3UGAwGg8FgXIW0WumyXq/HnDlzsGTJEnTt2hXJycl48cUXAQDTpk0DAGRkZCA1NRUzZ87Eiy++iIqKCixcuBCzZ89mlT0MBoPBYDAAtLLPyosvvgitVouZM2eirq4Ow4YNw1dffYXo6GgAgEajwbZt2/Dwww9j5MiRCA0NxT333IOXXnqpNafFYDAYDAajA9FqPitthclkQlRUFC5evMiiMQwGg8FgdBDMZjO6du2KqqoqGAwG2bEdvjeQkMjLSpgZDAaDweh4VFdXK4qVDh9ZsVqtKCwsRGRkpGS5szcIiu9qjdiw6+vYsOvr2LDr69iw6/MPhBBUV1cjMTERPC/vpNLhIys8z6NLly6tdn69Xn9V/jAKsOvr2LDr69iw6+vYsOvzHaWIikCrd11mMBgMBoPB8AUmVhgMBoPBYAQ0TKxIoNPpsGTJkqvWLZddX8eGXV/Hhl1fx4ZdX9vT4RNsGQwGg8FgXN2wyAqDwWAwGIyAhokVBoPBYDAYAQ0TKwwGg8FgMAIaJlYYDAaDwWAENNe8WFm+fDlGjBiBsLAwREVFiY65cOECpkyZgvDwcMTFxeHRRx9FY2Ojy5hjx47h1ltvRWhoKJKSkvDMM88gEHOXd+3aBY7jRL8OHDjgGCf2+FtvvdWOM6ene/fuHnNfvHixyxiaexqInDt3Dg8++CBSUlIQGhqKHj16YMmSJR5z78j3DwDeeOMNpKSkICQkBIMHD8bu3bvbe0qqWbFiBYYMGYLIyEh07twZt99+O06ePOkyZtasWR73afjw4e00Y/UsXbrUY/7x8fGOxwkhWLp0KRITExEaGopRo0bhxIkT7ThjdYj9LeE4Do888giAjnf/vv32W0yZMgWJiYngOA6ffvqpy+M096uhoQF//OMfERcXh/DwcEydOhWXLl1q9bl3eAdbX2lsbMS0adOQnp6OtWvXejxusVgwadIkdOrUCXv27EF5eTmysrJACMFrr70GwGZNPH78eIwePRoHDhzAL7/8glmzZiE8PBwLFixo60uSZcSIESgqKnI59vTTT2Pnzp246aabXI6vW7cOEyZMcHxP6zQYCDzzzDOYPXu24/uIiAjH/2nuaaDy888/w2q14u2330bPnj1x/PhxzJ49GzU1NR7dyjvq/fvoo48wb948vPHGGxg5ciTefvttTJw4EXl5eejWrVt7T4+ab775Bo888giGDBmC5uZm/PnPf0ZGRgby8vIQHh7uGDdhwgSsW7fO8X1wcHB7TNdr+vXrh507dzq+12g0jv+/8MILWL16Nf75z3+id+/eeO655zB+/HicPHkSkZGR7TFdVRw4cAAWi8Xx/fHjxzF+/HhMmzbNcawj3b+amhrceOONuP/++3HnnXd6PE5zv+bNm4ctW7Zg48aNiI2NxYIFCzB58mQcPHjQ5d77HcIghBCybt06YjAYPI5/9tlnhOd5UlBQ4Dj24YcfEp1OR0wmEyGEkDfeeIMYDAZSX1/vGLNixQqSmJhIrFZrq8/dFxobG0nnzp3JM88843IcAPnvf//bPpPykeTkZPLKK69IPk5zTzsSL7zwAklJSXE51pHv39ChQ8mcOXNcjvXp04csXry4nWbkH0pLSwkA8s033ziOZWVlkV//+tftNykfWbJkCbnxxhtFH7NarSQ+Pp6sXLnScay+vp4YDAby1ltvtdEM/cvcuXNJjx49HH/XO/L9c/8bQXO/qqqqSFBQENm4caNjTEFBAeF5nmzfvr1V53vNbwMpsW/fPqSlpSExMdFxLDMzEw0NDTh48KBjzK233upioJOZmYnCwkKcO3euraesis2bN6OsrAyzZs3yeCw7OxtxcXEYMmQI3nrrLVit1rafoJesWrUKsbGxGDBgAJYvX+6yTUJzTzsSJpMJMTExHsc74v1rbGzEwYMHkZGR4XI8IyMDe/fubadZ+QeTyQQAHvdq165d6Ny5M3r37o3Zs2ejtLS0PabnNadOnUJiYiJSUlIwffp0nD17FgCQn5+P4uJil3up0+lw6623dsh72djYiA0bNuCBBx5waZrb0e+fAM39OnjwIJqamlzGJCYmIi0trdXv6TW/DaREcXExjEajy7Ho6GgEBwejuLjYMaZ79+4uY4TnFBcXIyUlpU3m6g1r165FZmYmunbt6nL82WefxdixYxEaGoovv/wSCxYsQFlZGZ566ql2mik9c+fOxaBBgxAdHY3c3Fw88cQTyM/Px9///ncAdPe0o3DmzBm89tprePnll12Od9T7V1ZWBovF4nF/jEZjh7s3zhBCMH/+fNx8881IS0tzHJ84cSKmTZuG5ORk5Ofn4+mnn8aYMWNw8ODBgHIPlWLYsGF477330Lt3b5SUlOC5557DiBEjcOLECcf9EruX58+fb4/p+sSnn36Kqqoqlw92Hf3+OUNzv4qLixEcHIzo6GiPMa39+3lVipWlS5di2bJlsmMOHDjgkaMhhbOKFiCEuBx3H0PsybViz20NvLnmS5cuYceOHfj3v//tMdZ5URswYAAAWx5Iey12aq7vsccecxy74YYbEB0djbvuussRbQHo7mlb4s39KywsxIQJEzBt2jT87ne/cxkbaPdPLWK/T+11b/xBdnY2jh49ij179rgcv/vuux3/T0tLw0033YTk5GRs27YNd9xxR1tPUzUTJ050/L9///5IT09Hjx49sH79ekei6dVyL9euXYuJEye6RGQ7+v0Tw5v71Rb39KoUK9nZ2Zg+fbrsGPdIiBTx8fHYv3+/y7HKyko0NTU5FGh8fLyHqhRCge4qtbXw5prXrVuH2NhYTJ06VfH8w4cPh9lsRklJSZtdkzO+3FPhj+bp06cRGxtLdU/bGrXXV1hYiNGjRyM9PR3vvPOO4vnb+/7REhcXB41GI/r7FMjzluOPf/wjNm/ejG+//RZdunSRHZuQkIDk5GScOnWqjWbnX8LDw9G/f3+cOnUKt99+OwDbp/GEhATHmI54L8+fP4+dO3fik08+kR3Xke+fUMUld7/i4+PR2NiIyspKl+hKaWkpRowY0boTbNWMmA6EUoJtYWGh49jGjRs9EmyjoqJIQ0ODY8zKlSsDOsHWarWSlJQUsmDBAqrxr732GgkJCXFJIu4obNmyhQAg58+fJ4TQ3dNA5tKlS6RXr15k+vTppLm5meo5Hen+DR06lDz00EMux/r27dvhEmytVit55JFHSGJiIvnll1+onlNWVkZ0Oh1Zv359K8+udaivrydJSUlk2bJljoTNVatWOR5vaGjokAm2S5YsIfHx8aSpqUl2XEe6f5BIsJW7X0KC7UcffeQYU1hY2CYJtte8WDl//jw5fPgwWbZsGYmIiCCHDx8mhw8fJtXV1YQQQpqbm0laWhoZO3YsOXToENm5cyfp0qULyc7OdpyjqqqKGI1GMmPGDHLs2DHyySefEL1eT1566aX2uixFdu7cSQCQvLw8j8c2b95M3nnnHXLs2DFy+vRp8u677xK9Xk8effTRdpipOvbu3UtWr15NDh8+TM6ePUs++ugjkpiYSKZOneoYQ3NPA5WCggLSs2dPMmbMGHLp0iVSVFTk+BLoyPePEJtwDAoKImvXriV5eXlk3rx5JDw8nJw7d669p6aKhx56iBgMBrJr1y6X+1RbW0sIIaS6uposWLCA7N27l+Tn55Ovv/6apKenk6SkJGI2m9t59nQsWLCA7Nq1i5w9e5Z8//33ZPLkySQyMtJxr1auXEkMBgP55JNPyLFjx8iMGTNIQkJCh7k+QgixWCykW7duZNGiRS7HO+L9q66udqxxABx/K4UPcjT3a86cOaRLly5k586d5NChQ2TMmDHkxhtvpP7g5C3XvFjJysoiADy+vv76a8eY8+fPk0mTJpHQ0FASExNDsrOzPT6hHj16lPzqV78iOp2OxMfHk6VLlwZsVIUQQmbMmEFGjBgh+tjnn39OBgwYQCIiIkhYWBhJS0sja9asUfxUEQgcPHiQDBs2jBgMBhISEkKuv/56smTJElJTU+MyjuaeBiLr1q0T/Xl1DpJ25Psn8Le//Y0kJyeT4OBgMmjQIJdy346C1H1at24dIYSQ2tpakpGRQTp16kSCgoJIt27dSFZWFrlw4UL7TlwFd999N0lISCBBQUEkMTGR3HHHHeTEiROOx61WqyMqodPpyC233EKOHTvWjjNWz44dOwgAcvLkSZfjHfH+ff3116I/k1lZWYQQuvtVV1dHsrOzSUxMDAkNDSWTJ09uk2vmCAlAm1UGg8FgMBgMO8xnhcFgMBgMRkDDxAqDwWAwGIyAhokVBoPBYDAYAQ0TKwwGg8FgMAIaJlYYDAaDwWAENEysMBgMBoPBCGiYWGEwGAwGgxHQMLHCYDAYDAYjoGFihcFgMBgMRkDDxAqDwWAwGIyAhokVBoPBYDAYAQ0TKwwGg8FgMAKa/wd7+0jc3XLP1wAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 数据图\n",
    "fig3 = plt.figure()\n",
    "s1= plt.scatter(X_pca[:,0][y=='B'],X_pca[:,1][y=='B'])\n",
    "s2 = plt.scatter(X_pca[:,0][y=='F'],X_pca[:,1][y=='F'])\n",
    "s3 = plt.scatter(X_pca[:,0][y=='A'],X_pca[:,1][y=='A'])\n",
    "s4 = plt.scatter(X_pca[:,0][y=='G'],X_pca[:,1][y=='G'])\n",
    "s5 = plt.scatter(X_pca[:,0][y=='K'],X_pca[:,1][y=='K'])\n",
    "s6 = plt.scatter(X_pca[:,0][y=='O'],X_pca[:,1][y=='O'])\n",
    "s7 = plt.scatter(X_pca[:,0][y=='M'],X_pca[:,1][y=='M'])\n",
    "#7种\n",
    "\n",
    "\n",
    "\n",
    "plt.legend((s1,s2,s3,s4,s5,s6,s7),('s1','s2','s3','s4','s5','s6','s7'))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "823e8adc-01d1-4692-8925-c5a34077e69c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8035714285714286\n"
     ]
    }
   ],
   "source": [
    "#准确率\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "train, test, trlabel, telabel = train_test_split(X_pca, y, test_size = 0.4, random_state = 42)\n",
    "X_train = train\n",
    "y_train = trlabel\n",
    "X_test = test\n",
    "y_test = telabel\n",
    "\n",
    "\n",
    "KNN = KNeighborsClassifier(n_neighbors=3)\n",
    "KNN.fit(X_train,y_train)\n",
    "y_predict = KNN.predict(X_test)\n",
    "from sklearn.metrics import accuracy_score\n",
    "accuracy = accuracy_score(y_test,y_predict)\n",
    "print(accuracy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "765400d5-3bd5-4455-9fe3-eba6aee5bb5e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>...</th>\n",
       "      <th>141</th>\n",
       "      <th>142</th>\n",
       "      <th>143</th>\n",
       "      <th>144</th>\n",
       "      <th>145</th>\n",
       "      <th>146</th>\n",
       "      <th>147</th>\n",
       "      <th>148</th>\n",
       "      <th>149</th>\n",
       "      <th>150</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-7.762825</td>\n",
       "      <td>-8.188327</td>\n",
       "      <td>2.471210</td>\n",
       "      <td>1.089298</td>\n",
       "      <td>-2.040438</td>\n",
       "      <td>-0.931479</td>\n",
       "      <td>2.518291</td>\n",
       "      <td>-0.440978</td>\n",
       "      <td>0.881674</td>\n",
       "      <td>2.024012</td>\n",
       "      <td>...</td>\n",
       "      <td>0.012400</td>\n",
       "      <td>-0.008127</td>\n",
       "      <td>-0.010372</td>\n",
       "      <td>0.017084</td>\n",
       "      <td>0.006392</td>\n",
       "      <td>-0.015805</td>\n",
       "      <td>0.013146</td>\n",
       "      <td>-0.011324</td>\n",
       "      <td>-0.008755</td>\n",
       "      <td>-0.020472</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-10.851160</td>\n",
       "      <td>4.094699</td>\n",
       "      <td>-2.558630</td>\n",
       "      <td>-0.444493</td>\n",
       "      <td>0.506801</td>\n",
       "      <td>-0.236450</td>\n",
       "      <td>0.166943</td>\n",
       "      <td>0.586398</td>\n",
       "      <td>0.080782</td>\n",
       "      <td>-0.071838</td>\n",
       "      <td>...</td>\n",
       "      <td>0.004575</td>\n",
       "      <td>0.064639</td>\n",
       "      <td>0.007740</td>\n",
       "      <td>0.031402</td>\n",
       "      <td>0.060789</td>\n",
       "      <td>-0.024852</td>\n",
       "      <td>-0.001630</td>\n",
       "      <td>-0.037832</td>\n",
       "      <td>0.017986</td>\n",
       "      <td>0.092504</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-10.148026</td>\n",
       "      <td>2.565085</td>\n",
       "      <td>-2.777481</td>\n",
       "      <td>-0.393397</td>\n",
       "      <td>0.773268</td>\n",
       "      <td>0.068790</td>\n",
       "      <td>-0.267039</td>\n",
       "      <td>0.134430</td>\n",
       "      <td>0.542416</td>\n",
       "      <td>-0.300936</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.049459</td>\n",
       "      <td>-0.048007</td>\n",
       "      <td>0.060969</td>\n",
       "      <td>0.022420</td>\n",
       "      <td>0.038289</td>\n",
       "      <td>0.020519</td>\n",
       "      <td>-0.000744</td>\n",
       "      <td>0.025384</td>\n",
       "      <td>-0.014549</td>\n",
       "      <td>0.113524</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>17.094690</td>\n",
       "      <td>6.508276</td>\n",
       "      <td>1.769195</td>\n",
       "      <td>2.395833</td>\n",
       "      <td>1.125335</td>\n",
       "      <td>-0.717896</td>\n",
       "      <td>0.063925</td>\n",
       "      <td>0.436541</td>\n",
       "      <td>-0.302130</td>\n",
       "      <td>0.173999</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.016723</td>\n",
       "      <td>-0.003017</td>\n",
       "      <td>-0.015021</td>\n",
       "      <td>-0.013221</td>\n",
       "      <td>0.037142</td>\n",
       "      <td>0.006971</td>\n",
       "      <td>-0.036955</td>\n",
       "      <td>-0.014675</td>\n",
       "      <td>-0.034512</td>\n",
       "      <td>0.034031</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-5.225843</td>\n",
       "      <td>1.237991</td>\n",
       "      <td>-1.586884</td>\n",
       "      <td>-0.502146</td>\n",
       "      <td>-0.066863</td>\n",
       "      <td>-0.427356</td>\n",
       "      <td>0.080282</td>\n",
       "      <td>0.147065</td>\n",
       "      <td>-0.435458</td>\n",
       "      <td>-0.076888</td>\n",
       "      <td>...</td>\n",
       "      <td>0.012730</td>\n",
       "      <td>0.031513</td>\n",
       "      <td>-0.021621</td>\n",
       "      <td>0.002662</td>\n",
       "      <td>0.015347</td>\n",
       "      <td>-0.074366</td>\n",
       "      <td>-0.010525</td>\n",
       "      <td>0.076487</td>\n",
       "      <td>0.044384</td>\n",
       "      <td>-0.036730</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 150 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         1         2         3         4         5         6         7    \\\n",
       "0  -7.762825 -8.188327  2.471210  1.089298 -2.040438 -0.931479  2.518291   \n",
       "1 -10.851160  4.094699 -2.558630 -0.444493  0.506801 -0.236450  0.166943   \n",
       "2 -10.148026  2.565085 -2.777481 -0.393397  0.773268  0.068790 -0.267039   \n",
       "3  17.094690  6.508276  1.769195  2.395833  1.125335 -0.717896  0.063925   \n",
       "4  -5.225843  1.237991 -1.586884 -0.502146 -0.066863 -0.427356  0.080282   \n",
       "\n",
       "        8         9         10   ...       141       142       143       144  \\\n",
       "0 -0.440978  0.881674  2.024012  ...  0.012400 -0.008127 -0.010372  0.017084   \n",
       "1  0.586398  0.080782 -0.071838  ...  0.004575  0.064639  0.007740  0.031402   \n",
       "2  0.134430  0.542416 -0.300936  ... -0.049459 -0.048007  0.060969  0.022420   \n",
       "3  0.436541 -0.302130  0.173999  ... -0.016723 -0.003017 -0.015021 -0.013221   \n",
       "4  0.147065 -0.435458 -0.076888  ...  0.012730  0.031513 -0.021621  0.002662   \n",
       "\n",
       "        145       146       147       148       149       150  \n",
       "0  0.006392 -0.015805  0.013146 -0.011324 -0.008755 -0.020472  \n",
       "1  0.060789 -0.024852 -0.001630 -0.037832  0.017986  0.092504  \n",
       "2  0.038289  0.020519 -0.000744  0.025384 -0.014549  0.113524  \n",
       "3  0.037142  0.006971 -0.036955 -0.014675 -0.034512  0.034031  \n",
       "4  0.015347 -0.074366 -0.010525  0.076487  0.044384 -0.036730  \n",
       "\n",
       "[5 rows x 150 columns]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca = PCA(n_components=150)    #成员的数量————用两个维度的信息代表四个维度的信息，是浓缩和精华\n",
    "principalComponents = pca.fit_transform(X)    #主要的成分\n",
    "principalDf = pd.DataFrame(data = principalComponents\n",
    "             , columns = list(range(1, 151)))\n",
    "principalDf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "6a1f1279-d15a-48e8-865f-14e649052486",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'criterion': 'gini', 'max_features': 3, 'n_estimators': 50}"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# grid search调参\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "parameters = {\n",
    "    'n_estimators':[5,10,15,20,30,35,40,45,50,55,60,65,70],\n",
    "    'max_features':[1,2,3,4],\n",
    "    'criterion':['gini','entropy']\n",
    "}\n",
    "\n",
    "rf = RandomForestClassifier()\n",
    "rf_search = GridSearchCV(rf, parameters, scoring='accuracy', cv=5)\n",
    "rf_search.fit(X_train, y_train)\n",
    "\n",
    "#查看最佳结果\n",
    "rf_search.best_estimator_\n",
    "rf_search.best_score_\n",
    "rf_search.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "3f890afa-28ec-4d05-a308-55a7e1bf3851",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-4 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-4 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-4 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-4 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-4 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-4 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-4 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(max_features=3, n_estimators=50)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" checked><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;RandomForestClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(max_features=3, n_estimators=50)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "RandomForestClassifier(max_features=3, n_estimators=50)"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split( X_pca, y , test_size=0.3, random_state=420)\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "# 通过RandomForestClassifier类定义一个随机森林模型，名字叫rf\n",
    "rf = RandomForestClassifier(n_estimators = 100)\n",
    "\n",
    "# 对lr模型进行训练(fit)\n",
    "rf.fit(X_train, y_train)\n",
    "\n",
    "# 用最佳参数重新训练模型\n",
    "rf = RandomForestClassifier(criterion='gini',max_features=3,n_estimators=50)\n",
    "rf.fit(X_train, y_train)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "c42cc941-01a6-40f7-873b-ca2ca13ce059",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "分类评估汇总报告:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           A       1.00      0.92      0.96        26\n",
      "           B       1.00      0.87      0.93        31\n",
      "           F       0.69      0.75      0.72        24\n",
      "           G       0.86      0.92      0.89        39\n",
      "           K       0.95      0.95      0.95        39\n",
      "           M       1.00      0.88      0.94        25\n",
      "           O       0.83      0.96      0.89        26\n",
      "\n",
      "    accuracy                           0.90       210\n",
      "   macro avg       0.90      0.89      0.90       210\n",
      "weighted avg       0.91      0.90      0.90       210\n",
      "\n",
      "误分类矩阵:\n",
      " [[24  0  1  0  0  0  1]\n",
      " [ 0 27  2  0  0  0  2]\n",
      " [ 0  0 18  5  0  0  1]\n",
      " [ 0  0  3 36  0  0  0]\n",
      " [ 0  0  0  1 37  0  1]\n",
      " [ 0  0  2  0  1 22  0]\n",
      " [ 0  0  0  0  1  0 25]]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import roc_auc_score\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import auc\n",
    "# 利用模型对测试集进行预测，输出target预测标签值和概率\n",
    "y_test_pred = rf.predict(X_test)\n",
    "y_test_prob = rf.predict_proba(X_test)\n",
    "# 分类评估汇总报告classification_report\n",
    "print('分类评估汇总报告:\\n',classification_report(y_test,y_test_pred))\n",
    "# 误分类矩阵 confusion_matrix\n",
    "print('误分类矩阵:\\n',confusion_matrix(y_test,y_test_pred))                \n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7f111d95-ffac-4f64-8e8a-f0d35883ce30",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "331a9058-25c3-428a-9de8-3858dede71ed",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
